2009-04-22 15 views
15

Mi piacerebbe studiare un buon codice C/C++. Il codice dovrebbe:Suggerimenti di esempi eccellenti di codice C/C++ reale

  1. essere buoni in stile e struttura, che presenta le migliori pratiche
  2. essere un programma di vita reale (non un esempio o giocattolo)
  3. non troppo grande in modo che non prende le età per analizzare si
  4. Windows e/o Unix

so che ci sono 1000 di progetti open source là fuori. Ma mi piacerebbe sentire i tuoi suggerimenti.

Sono programmatore Java e io sono curioso come buon progetto in C/C++ è strutturata (file), granularità delle classi/funzioni/files, la documentazione/commenti, costruire utensili, ecc

multipli suggerimenti sono benvenuti per esempio questo è un buon esempio di Windows, che è buono puro C ecc.

+4

questo dovrebbe essere Community Wiki. –

risposta

8

Vorrei menzionare in particolare memcached. È un ottimo esempio di codice abbastanza breve, leggibile con uno scopo chiaro.

In secondo luogo, vorrei raccomandare il Apache web server. È un progetto open source straordinariamente ben gestito che imparerai molto, sia sulla lingua, sia sulle pratiche generali di progettazione e networking/threading.

2

Ecco lo main file per relayd, che è un daemon che gestisce il bilanciamento del carico e il failover. È ben scritto, pieno di funzionalità, codice C pulito. È abbastanza grande da farti un'idea di un programma del "mondo reale", ma non così grande da non riuscire a capirlo con un po 'di lavoro. Ottimo per codice di rete sicuro, ben scritto, demoni, ecc.

Modestia a parte, c'è anche un po 'di tiling window manager per X con cui ho aiutato. È piuttosto piccolo ma è un vero guaio, e gli altri programmatori su di esso hanno standard elevati (e tenetemi a loro!) ... Bello per imparare le cose di base di X.

4

Samba: un server di rete molto diffuso, multipiattaforma (basato su POSIX), puro C, molto popolare.

Samba ha buona developer documentation, e il codice base stessa è molto ben organizzato; Non ho avuto problemi a immergermi in qualsiasi posizione all'interno del codice per rispondere a una domanda che avevo sul suo funzionamento interno o per rintracciare un bug.

3

Trovo che l'implementazione di Lua sia una fonte C piuttosto carina. Ma le lingue sono un po 'strane come un progetto di esempio.

+0

Molti kit di sorgenti storiche (incluso l'attuale 5.1.4) sono disponibili all'indirizzo http://www.lua.org/ftp/ e c'è un'interfaccia web per l'attuale kit sorgente all'indirizzo http://www.lua.org/source /5.1/ – RBerteig

3

Diomidis Spinellis ha alcuni suggerimenti nel suo libro "Lettura del codice: la prospettiva dell'open source", Addison Wesley, 2003. ISBN 0-201-79940-5.

Forse il libro potrebbe esserti utile.

URL http://www.spinellis.gr/codereading/

3

Google's Chromium è abbastanza grande, ma non c'è bisogno di analizzare tutti di apprezzare la sua struttura pulita, peer-reviewed. Inoltre, è un buon esempio di distribuzione dell'ambiente di sviluppo ben fatto.

+0

grazie per il suggerimento! Posso solo contrassegnare una risposta come "accettata", tuttavia il tuo suggerimento è il terzo progetto che esaminerò. – k1udge

-1

È sicuramente bisogno di scegliere tra C o C++. L'esempio ovvio: le buone pratiche per la gestione degli errori sono molto diverse.

+0

Ho downvoted perché questo dovrebbe essere un commento. – nbro

1

K&R ha molti buoni esempi di programmi reali. Ad esempio, a pagina 115 della Seconda Edizione ci sono due semplici implementazioni del comando echo. Da lì, potrebbe essere interessante vedere come il comando è stato implementato nel tempo. Ad esempio, esiste una versione nell'origine GNU coreutils. Una versione derivata da BSD può essere trovata nell'origine BusyBox.

Potrebbe essere interessante vedere come le nuove versioni si confrontino con gli esempi di libri di testo. Perché i programmi utilizzati nella vita reale sono più lunghi? Quanto del codice è correlato a nuove funzionalità e quanto è correlato al trattamento dei casi limite? Come scriverebbe lo stesso codice in Java?