Sfondo:
Attualmente sto lavorando a un progetto C ++. È per uso aziendale, quindi questo progetto non è open source. Tuttavia, questo è un progetto con una base di codice abbastanza grande (circa 10.000 righe di codice) e un paio di librerie e binari esterni collegati. Il problema è che quasi l'80% della base di codice è scritto in stile C piuttosto che in stile C ++, ma l'interfaccia principale è scritta in C ++ 11 e deve essere compilata in C ++ 11. Una delle parti più scomode del codice di stile C è un sacco di istruzioni goto
utilizzate, e posso dire che lo scopo dell'utilizzo di goto
è quello di garantire che il codice sia sicuro per i thread e ripulire la spazzatura giusto in tempo. (Hanno funzionato) Quando ho imparato il C ++ per la prima volta, ho iniziato con C ++ 11 e penso che RAII sia la moda moderna per sostituire lo stile hacky per garantire che il codice sia sicuro da thread e che le risorse utilizzate vengano pulite in tempo.
Puzzle:
Sono stato assegnato per aggiungere una serie di nuove funzioni nel progetto. Alcune delle mie modifiche devono essere fatte in questi codici in stile C. E se ho cambiato uno di loro, perché non refactoring tutti in stile C ++ 1x? Il conflitto ha un tempo limitato, non riesco a completare il refactoring di tutti loro, nemmeno l'80%. E queste basi di codice in stile C usano anche alcune librerie in stile C, non so se ho cambiato il mio codice da stile C a stile C ++, queste librerie esterne funzioneranno come prima? Ci saranno librerie C ++ equivalenti per sostituire quelle librerie C deprecate? Quindi i miei enigmi sono: Dato un tempo limitato, come rifattorizzare in modo efficace un grande progetto di C ++ legacy basato su codice dallo stile C allo stile C ++? Qual è il trade off? Vale la pena considerare lo scambio?