Sfondo / Scenario
Ho iniziato a scrivere un'applicazione CLI esclusivamente in C (il mio primo vero programma C o C ++ che non era "Hello World" o una sua variante). Intorno a metà stavo lavorando con "stringhe" di input dell'utente (array di caratteri) e ho scoperto l'oggetto streamer di stringa C ++. Ho visto che potevo salvare il codice usando questi, quindi li ho usati attraverso l'applicazione. Ciò significa che ho modificato l'estensione del file in .cpp e ora compilo l'app con g++
anziché gcc
. Quindi, sulla base di ciò, direi che l'applicazione è ora tecnicamente un'applicazione C ++ (sebbene il 90% + del codice sia scritto in quello che chiamerei C, poiché vi è un sacco di crossover tra le due lingue data la mia limitata esperienza di il due). È un singolo file .cpp lungo circa 900 righe.
Fattori importanti
Desidero che il programma sia gratuito (come in denaro) e liberamente distribuibile e utilizzabile per tutti. La mia preoccupazione è che qualcuno guardi il codice e pensi qualcosa all'effetto di:
Oh look at the coding, it's awful, this program can't help me
Quando potenzialmente potrebbe! Un'altra questione è che il codice è efficiente (è un programma per testare la connettività Ethernet). Non ci dovrebbero essere parti del codice così inefficienti da ostacolare seriamente le prestazioni dell'applicazione o il suo output. Tuttavia, penso che sia una domanda per Stack Overflow quando chiedi aiuto con funzioni, metodi, chiamate oggetto specifiche, ecc.
La mia domanda
Avere (a mio avviso) misto C e C ++ dove forse non dovrei. Dovrei cercare di riscriverlo tutto in C ++ (con questo, voglio dire implementare più oggetti e metodi C ++ dove forse ho codificato qualcosa in uno stile C che può essere condensato usando le nuove tecniche C ++), o rimuovere l'uso di oggetti stringa streamer e portare tutto "indietro" al codice C? C'è un approccio corretto qui? Mi sono perso e ho bisogno di una guida su come mantenere questa applicazione "buona" agli occhi delle masse, quindi la useranno e ne beneficeranno.
Codice - Aggiornamento
Qui è un link al codice. Sono circa il 40% di commenti, commento quasi ogni riga finché non mi sento più fluente. Nella copia a cui mi sono collegato, ho rimosso praticamente tutti i commenti. Spero che questo non lo renda troppo difficile da leggere. Spero comunque che nessuno debba capirlo appieno. Se però ho creato fatali difetti di progettazione, spero che dovrebbero essere facilmente identificabili. Dovrei anche menzionare, sto scrivendo un paio di desktop e laptop Ubuntu. Non intendo portare il codice su altri sistemi operativi.