By good design I mean things like meaningful classes and architecture,
good use of design patterns, good use of abstraction, good
organization of components, high cohesion and low coupling between
components
In primo luogo, un software, buono o cattivo, non vive in solitudine
modella uno scenario del mondo reale che gli umani concepiscono come un problema e
quindi è sempre associato strettamente a qualcosa chiamato an
"dominio dell'applicazione". Quindi, ogni volta che parli di software, prima sappi
e studia il dominio - perché solo così puoi ottenere il
discrezione del bene e del male.
-
git - non solo buono, ma un design sorprendente. Non è un
controllo di versione al suo interno, solo un file system. Un sottile rivestimento
di funzionalità in cima al core lo rende un controllo di versione
sistema. Conosci l'interno di git e il tuo senso di
il design del software sarà illuminato.
-
jQuery - non una libreria molto ben documentata (internamente),
ma una fonte stimolante che dimostra come JavaScript lato client
il codice può fare miracoli.
-
NodeJS - se vuoi creare server questo progetto ha
idee e modelli nuovi e piacevoli da offrire.
-
v8 - ottimo codice C ++, fantastica libreria da imparare / studia
implementazioni di macchine virtuali.
-
Progetti NoSQL - Couch, Mongo, Redis, Cassandra - questi progetti dimostrano modi intelligenti per risolvere la persistenza
i problemi. Inoltre abbracciano l'idea della persistenza poliglotta.
-
Boost libraries - buona dose di C ++.
-
OpenStack - ottimi progetti per il cloud computing e la virtualizzazione.
-
The Apache Software Foundation - Scegli qualsiasi
dei loro progetti e studiarlo. La struttura modulare di HTTPd è
una grande fonte se vuoi vedere come i componenti si uniscono. aprile
(runtime apache portable) - anche una buona lib.
-
mod_wsgi - uno dei migliori programmi in C che abbia mai visto.
"buon uso dei modelli di progettazione" - NON è importante per il codice
per corrispondere a un modello di design ben noto - è di più
importante che risolva il problema "in modo intelligente" - che sia
manutenibile, riutilizzabile e leggibile. Se il codice è stipato in a
particolare "forma" - solo per aderire a un modello di design -
può essere un codice errato.
"non meno di 100.000 righe di codice" - da quando ha fatto il
il numero di linee diventa una metrica di buona qualità - ottenendo a
il gusto del "software ben progettato / architetturale" non lo richiede
sii GRANDE.
Ancora una volta, ricorda di studiare la natura e le sfumature del dominio del problema
prima, e poi approfondire la lettura del codice.
AGGIORNAMENTO: ottobre 2015
InfluxDB - link
Questo progetto Go è in fase di sviluppo attivo e NON è ancora molto complesso. Quindi puoi iniziare a scavare nel codice in modo relativamente semplice rispetto a qualcosa come OpenStack.