Quanto dovrei provare a scrivere codice idiomatico in un ambiente poliglotta?

2

Lavoro su un piccolo team (2 primari con uno o due altri contributori occasionali) su un progetto / prodotto che si estende su un numero di piattaforme separate. Realizziamo il firmware incorporato nei chip C on Arm0. Scriviamo python e un po 'di script di shell per piccoli computer Linux di dimensioni simili a quelli di Raspberry Pi. Scriviamo app iOS in Swift. Scriviamo app per Android in Kotlin. Spariamo per una certa quantità di parità tra le app Android e iOS.

Raro è il giorno in cui lavoro da solo in una base di codice. Mi trovo diviso tra due estremi:

1) In ogni lingua / piattaforma / ambiente, aderisci a tutte le convenzioni di codifica, le migliori pratiche e gli idiomi di quella particolare comunità.

2) Rendi le tue convenzioni / idiomi che tendono ad essere un "melting pot" convergente tra loro.

Un esempio ancora minore di qualcosa di simile è parentesi sulle espressioni condizionali. C e Kotlin li richiedono. Swift no. Ma di recente, mi trovo a inserirli nel codice Swift, perché è più semplice essere coerenti.

Allo stesso tempo, non sto aggiungendo semi-due punti in tutto Python / Kotlin / Swift solo perché C li richiede.

Queste decisioni su dove ibridare, dove non farlo, mi sembrano arbitrarie. Fondamentalmente è una questione di stile personale. Sono curioso di sapere se altri sono stati in grado di costruire un approccio più basato sul principio per farlo. Oppure gli altri scendono lungo questa strada, quindi rifiutano l'intero sforzo e diventano completamente idiomatici in ciascuna area (questo non mi sembra realistico, perché ci sono "schemi" in ogni sistema che sono più idiomatici in uno rispetto all'altro) .

    
posta Travis Griggs 25.09.2018 - 00:11
fonte

1 risposta

4

Penso che sarebbe bello conoscere il livello di talento con cui hai a che fare. Se c'è un ragazzo che fa la maggior parte del lavoro in una zona, potresti volere che stabilisca le convenzioni per quella zona. Tuttavia, se sai che stai assumendo altri in quella zona, potresti voler imporre personalmente uno stile di codifica popolare per concederti un piccolo vantaggio.

Inoltre, quanto è flessibile lo staff dal punto di vista della personalità? Quanto è importante che le loro abitudini non vengano interrotte? Queste sono considerazioni importanti. Come Steve McConnell parla di Codice completo , uno stile di codifica abbastanza diverso può influire sulla capacità di un coder di comprendere il codice.

Queste convenzioni sono state un problema per qualcuno degli sviluppatori? Lavoro in un'azienda in cui devo scrivere codice in diversi progetti con lingue molto diverse. In particolare, abbiamo C / C ++, C #, Java, Qt / Qml, JavaScript + Web (CSS, XHTML, ecc.). Sono l'Architetto, sono responsabile della definizione di convenzioni di stile appropriate per questi progetti / team.

La mia raccomandazione è che per ogni lingua che usi, scegli uno stile basato su una guida di stile pubblicata popolare per quella lingua. Un'enorme quantità di pensiero va in queste guide di stile, non posso raccomandarle abbastanza. Leggendoli può essere una gioia da sola, impari così tanto.

Per le lingue che sono abbastanza simili da consentire stili simili, ti consiglio di adottare uno stile simile che è principalmente condiviso tra queste lingue. Ad esempio, utilizziamo la guida di stile DotNet di Microsoft sia per C / C ++ (ovviamente lo abbiamo personalizzato, ma è giusto) e C #. Tuttavia, alcuni linguaggi applicano regole di capitalizzazione incompatibili.

Ad esempio, non saremmo in grado di richiedere che i nomi dei metodi Haskell siano in maiuscolo nello stesso modo in cui lo facciamo in C / C ++ o C #. La lingua non lo permetterà. In tal caso, scegli una guida di stile pubblicata per il tuo codice Haskell e applicala attraverso il coaching e le recensioni. Questo ti eviterà di dover fare un po 'di serio lavoro di gambe.

Se si lavora con un framework, il framework può limitare o fornire proprie convenzioni che rendano il framework più facile da utilizzare. Non solo, ma le convenzioni potrebbero essere effettivamente necessarie per lavorare con il framework. In questi casi, naturalmente, inchinati al quadro e fai un'eccezione. Sii intenzionale e modifica la guida allo stile in modo che esista un precedente.

Spero che questo sia stato utile. Fammi sapere se c'è qualcosa che ho omesso.

    
risposta data 25.09.2018 - 01:20
fonte