Le convenzioni di denominazione devono essere coerenti o non tra più linguaggi di programmazione in un progetto? [duplicare]

3

Ho visto questa domanda su SO: qui ; la domanda è un po 'vecchia e non molti visti, quindi voglio chiederglielo di nuovo.

Attualmente lavoro su un progetto usando C ++, C # e Actionscript-3, le convenzioni di C ++ e C # sono simili, ma AS3 non lo è.

Ad esempio, le convenzioni sul nome della funzione differiscono molto, è comune usare GetFoo() in C ++ ma getFoo() in AS3.

Secondo la risposta della domanda dell'SO, suggerisce che l'uso di convenzioni diverse per lingue diverse sia più appropriato, che è anche la mia opinione; Mi piacerebbe solo accettarlo, ma è un po 'troppo breve; per convincere i membri del mio team, mi piacerebbe cercare pro e contro più dettagliati.

    
posta Marson Mao 13.02.2015 - 04:44
fonte

2 risposte

4

Gli standard di codifica dovrebbero essere specifici per i dettagli di ogni lingua e piattaforma. Un idioma considerato essenziale in C ++ potrebbe essere superfluo per un altro linguaggio come C #. Ad esempio, si potrebbe insistere nel posizionare sempre una costante in un'espressione 'if' a sinistra (5 = x) per ridurre le possibilità di avere accidentalmente un singolo equals accettato come buon codice dal compilatore C ++. In C # questo non è rilevante perché l'espressione deve restituire un valore booleano e quindi non puoi mai accidentalmente avere un solo uguale.

Aggiungendo ulteriori convenzioni solo per rendere le lingue coerenti significa che ogni lingua finirà con regole prive di significato che non sono rilevanti e quindi infastidiranno gli sviluppatori.

È anche importante utilizzare standard che sono probabilmente familiari ad altri programmatori nella stessa comunità ma che non funzionano nella tua azienda. Le nuove reclute non dovrebbero essere completamente sorprese dallo standard di codifica perché è così diverso da chiunque altro nell'industria.

    
risposta data 13.02.2015 - 06:08
fonte
1

Per favore, usa le convenzioni standard per ogni lingua (o un po 'molto vicino allo standard).

  • Maggiore coerenza in ogni parte del software stesso (perché avrà le convenzioni realmente applicabili)
  • Più facilità per altri sviluppatori esterni (esterni). Non devono imparare stili "incoerenti".
  • Facilità di paragone / revisione / trasferimento del codice da / verso esempi nel "mondo esterno"
  • Nessun rimpianto dopo, vedi sotto

Ecco cosa ho provato:

Attualmente sto lavorando in un negozio in cui prima facevano progetti solo per Java. Quindi, hanno iniziato a fare C # /. NET e hanno applicato gli stili / convenzioni di denominazione Java già noti a quei progetti C # /. NET.

Quando io (e altri) mi sono unito al team, dopo aver fatto C # per anni, ero davvero seccato di come fosse il codice e ho avuto difficoltà a continuare con lo stile java apparentemente imbarazzante nei progetti C # /. NET .

Più tardi hanno capito che avere uno stile "sbagliato" è sbagliato e ha iniziato ad adottare le convenzioni C # /. NET nei nuovi progetti C # /. NET. Ora abbiamo davvero mescolato gli stili, a volte diversi all'interno di una piattaforma, a volte diversi nei progetti. Spero che col tempo scriveremo un codice C # in stile Java, ma nella mia prospettiva, sarebbe stato meglio non iniziare mai a farlo affatto.

Bottom line:

Che cosa potresti fare

  • Regole di parentesi coerenti (apertura di una nuova riga / stessa riga)
  • Regole di commento coerenti (ad esempio solo XML)
  • Regole sulla qualità del codice (lunghezza dei metodi, frequenza di test dell'unità ecc.
  • Utilizza uno strumento per aiutare ad applicare quanto sopra

Cosa dovresti davvero mantenere per lingua / piattaforma

  • I namespace
  • Casing of identifiers
  • Stili di denominazione per identificatori
risposta data 13.02.2015 - 08:15
fonte