Utilizzo delle convenzioni di codifica C nel codice C ++ [duplicato]

1

Sto lavorando su una base di codice di grandi dimensioni i cui moduli principali sono in C e i moduli di estensione sono in C ++. Abbiamo una convenzione di codifica per il codice C ma mi viene detto che dobbiamo applicare la stessa convenzione di codifica per i moduli C ++.

Come preferenza personale non mi piace usare uno stile ANSI-C che dichiari variabile all'inizio del campo di applicazione invece del primo punto di utilizzo (che mi costringe a navigare all'indietro ogni volta per vedere cos'è un tipo di variabile e penso che sia anche molto più incline all'errore poiché dimentichi le variabili se la funzione ne ha molte) e inoltre non mi piace non poter usare puntatori intelligenti e deallocare molte cose in modo non RAII se si verifica un errore.

Il mio capo dice che la coerenza stilistica conta più di ogni altra cosa, ma non siamo d'accordo su questo punto (se abbiamo gli strumenti per rendere i nostri moduli C ++ più chiari e leggibili ~ quindi mantenibili ... perché non usarli?)

Questo è comune in un grande progetto misto C / C ++?

    
posta user3834459 05.07.2018 - 18:44
fonte

2 risposte

3

Sfortunatamente, il codice C ++ che è molto simile a C è abbastanza comune nelle basi di codici misti. Tuttavia , che è quasi sempre per caso e per negligenza piuttosto che per politica. Non ha senso usare un'altra lingua se non si intende usare quella lingua in modo idiomatico e sfruttare le astrazioni che fornisce per rendere il codice più solido e più facile da scrivere correttamente. Puoi anche scrivere l'intera base di codice in C (che comunque non è l'idea peggiore). Per non parlare, cose come le dichiarazioni variabili in alto non sono nemmeno state lo standard in C dal C99.

    
risposta data 05.07.2018 - 19:07
fonte
1

Questo è pericoloso!

L'uso di una convenzione o di un paradigma senza capire perché la convenzione esiste porterà a bug e codice errato; questo è noto come programmazione settoriale Cargo .

Ad esempio in diritto C con malloc / libero, avendo un singolo punto di uscita per ogni funzione era considerata una best practice; RAII , in C ++, rende obsoleto il principio dell'uscita singola. Usare o continuare a usare questo paradigma in C ++ mette restrizioni non necessarie sul codice; nuoce alla leggibilità, può complicare il codice e introdurre bug.

Anche non aggiornare i tuoi standard / convenzioni è pericoloso; la C moderna non richiede più definizioni variabili nella parte superiore della funzione; a meno che l'uso di C89 non usi le convenzioni progettate per C89, aggiornale alle convenzioni moderne per la tua lingua moderna!

    
risposta data 05.07.2018 - 19:43
fonte

Leggi altre domande sui tag