2009-12-08 15 views
15

Ho programmato per circa un anno e tutte le cose che ho scritto funzionano - è scritto molto male dal mio punto di vista. Mi piacerebbe sapere se ci sono dei buoni libri (gratuiti) su Software Design che possono offrire una piccola guida al programmatore principiante? Non penso che avrei tanti problemi se conoscessi un po 'i processi mentali che riguardano il design del software.Principi di progettazione per i noob completi?

+5

LOL. Ho letto molti libri e continuo a dire "Man, è davvero brutto" dopo che ho finito. Il fatto che tu lo riconosca significa che sei già nella percentuale più alta degli sviluppatori. :) http://www.codinghorror.com/blog/archives/000530.html –

+0

Stai cercando qualche consiglio generale o stai pensando a Python in particolare? Potrebbe essere una buona idea rendere questo wiki della comunità se sarà un generale "Come apprendere le migliori pratiche di progettazione del software". –

+0

Sto cercando un consiglio generale. Ho pensato che i principi ei processi di progettazione sarebbero indipendenti da qualsiasi linguaggio di programmazione, quindi non mi sono preoccupato di specificare. – cornjuliox

risposta

4

Leggi il codice di altre persone. Questo è il modo migliore per apprendere i migliori principi di progettazione. Leggi il codice delle persone sul tuo lavoro, leggi il codice delle persone sui forum, dai un'occhiata ai progetti open source ... e non smettere mai di scrivere codice, perché il miglior insegnante è gli errori che fai lungo il percorso ...

Dai un'occhiata a libro, Pragmatic Programmer, from Journeyman to Master. Questo è un grande libro per aiutare a colmare questa lacuna nella conoscenza che stai cercando.

4

Sembra che tu voglia un libro su modelli di design.

Dai un'occhiata a: Design Patterns - Elements of Reusable Object-Oriented Software. Attenzione però non è specifico per Python.

Si potrebbe anche prendere a questo online resource per modelli di progettazione Python.

L'utente Stackoverflow @S.Lott ha anche molte risorse Python davvero buone che ha scritto. Puoi vederli sulla sua pagina Stackoverflow.

+0

Beh, il libro sui disegni di design è ovviamente pertinente ma (se la mia esperienza di provare a leggerlo quando ho iniziato a programmare è indicativa) forse lo fraintenderà. Le ragioni per applicare gli schemi diventano evidenti solo dopo aver creato alcune applicazioni più grandi. Vorrei raccomandare [Practical Object Oriented Design with Ruby] (http://www.poodr.com/) di Sandi Metz. Anche se non sei un programmatore Ruby. – Dionysis

7

DRY e YAGNI sono buoni punti di partenza per i principianti e devi studiare e capire OOP.

Riguardo a Design Patterns (che sono un po 'più avanzati e astratti di DRY e OOP) è possibile studiare dal Design Patterns - Java Companion gratuito. Il fatto che non sia Python non dovrebbe infastidirti: i modelli di design classici sono applicabili ovunque.

Quando avete voglia di andare oltre, date un'occhiata a DDD (free DDD book from Eric Evans) e ovviamente a Unit Testing che, credeteci o no, migliorerà il vostro codice e voi come designer.

+1

Se si sta utilizzando qualsiasi cosa tranne Java/C# (Python, C++, ecc.), Non è necessario più di metà dei modelli GOF. – Macke

+1

Sì, ma la conoscenza è sempre benvenuta. Separa anche i bambini da uomini veri :) – cherouvim

0

Ottenere la Banda dei quattro book - Design Patterns .. Ma per favore non più di seguirla e tenta di utilizzare Singleton ovunque :)

Basta sapere e usarlo con saggezza. Anche dopo che guardo in buon codice open source e cercare di imparare dalle loro strutture .. Vi suggerisco di Google Code e SourceForge

12

Head First Design Patterns potrebbe essere un intro più delicato per il GoF "Design Patterns" Libro

Steve McConnell di Code Complete è una buona guida al codice di molte cose, incluso come usare buone strategie in linguaggi che non li supportano in modo nativo.

Martin Fowler's Refactoring si riferisce pesantemente a Design Patterns, ma è un grande catalogo di codice così così, e modi migliori di scriverlo (l'ho letto più o meno nello stesso periodo in cui leggevo "Code Complete", un paio di anni [ tsk tsk] prima di leggere Design Patterns e "Refactoring" ha avuto un impatto importante sul modo in cui ho guardato il codice che ho scritto. Per il meglio, mi piace pensare).

Nessuno di questi è "gratuito". Ma quanto consiglio vuoi? Se stai cercando di investire nella tua carriera, questo è il modo più economico per farlo.

0

A seconda del proprio background (e in qualche misura, esperienza) si potrebbe anche voler esaminare come algoritmi di base. Un libro come Introduction to Algorithms è un buon inizio.

Oltre a questo, voto anche per i primi modelli di design. Il GoF funziona meglio come riferimento in seguito.

0

Dimenticare i libri. Nella mia esperienza (che include il tempo come istruttore e sceneggiatore di corsi di design OO) alcune persone possono fare design e alcuni pople no - è un talento, come essere uno scultore. Nella migliore delle ipotesi, leggere libri sull'argomento ti permetterà di progettare male, se non hai il talento.

3

Un paio di altri principi che possono essere degno di nota:

C.R.A.P.:The Four Principles of Sound Design - Per l'usabilità questi sono buoni principi per conoscere.

Pablo's Topic of the Month - March: SOLID Principles - Ha alcune buone idee pure.

+1

+1 per SOLID. Inoltre, penso che vale la pena menzionare gli articoli definitivi di Bob Martin qui: http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod e il suo libro, Agile Software Development, Principles, Patterns and Practices (http://www.amazon.com/ Software-Development-Principles-Patterns-Practices/dp/0135974445) Che è davvero una buona panoramica dello "stato dell'arte" in OO Design. –

1

Probabilmente dovresti imparare di più sulla programmazione orientata agli oggetti. Ecco un bel tutorial che si basa su Python:

OOP Tutorial in Python

Programmazione orientata agli oggetti è un modo di organizzare voi i programmi in un modo che rispecchia le cose del problema che si sta tentando di risolvere.

HIH

... Richie

1

imparare una lingua diversa! Adoro Python e, nonostante quello che dicono tutti, il mio pitone è migliore perché conosco java. (Alcune persone si lamentano del fatto che iniziare con java fa sì che inizialmente si scriva un grosso pitone, ma se già conosci più o meno il modo semplice di fare qualcosa in python, sarai al sicuro da questo.)

Lasciami fare un po ' un po 'di chirurgia della motosega qui. È facile scrivere python la prima volta. Lo scrivo in vim, perché posso e perché amo vim. È facile mantenere e refactare Java se si dispone di un IDE. Scrivo java in Eclipse, perché senza di esso sarei senza speranza. Ma il punto è, scrivere in una lingua che ti costringe a usare le astrazioni con uno strumento che rende più semplici le astrazioni, lentamente modellerà il tuo cervello per codificare in modo più astratto. Lo riporterai a Python, anche se le astrazioni preferite saranno leggermente diverse.

2

Non è un libro (i libri sono così passati), ma è sicuramente bene passare qualche ora a leggere il numero Portland Pattern Repository.

Anche se non è un tutorial, presenta esempi di codice eccezionali e discussioni altrettanto valide su schemi di progettazione e programmazione in generale. È un'ottima risorsa per imparare a pensare come un programmatore.

3

Con un anno di esperienza di programmazione, non suggerirò Design Patterns (o Head First Design Patterns), poiché ritengo che Design Patterns (i concetti) sia meglio elaborato una volta che hai più esperienza di programmazione, forse più come 5 -10 anni di esperienza .

Penso che il libro, The Pragmatic Programmer: from Journeyman to Master di Andrew Hunt e David Thomas è forse la soluzione migliore per ottenere il massimo per il tuo livello al livello in cui ti trovi attualmente. Ecco un eccellente summary degli argomenti e dei contenuti (da Jeff Atwood a Coding Horror). Usa inter-library loan se non puoi permetterti di acquistare la tua copia.

cover of The Pragmatic Programmer http://assets1.pragprog.com/images/covers/190x228/tpp.jpg?1236205216

Due altri titoli che sono anche indipendente dal linguaggio ancora classici libri altamente raccomandato per i nuovi programmatori che si possono tenere a mente sono The Mythical Man-Month (edizione anniversario pubblicato nel 1995) da Fred Brooks, e Code Complete (seconda edizione) di Steven McConnell.

Questi libri contribuiranno ad ampliare le tue conoscenze di programmazione senza sovraccaricarti del tuo attuale stadio di sviluppo e costituire una solida base per diventare un programmatore migliore. Tutti questi libri sono costantemente in cima allo recommendedprogrammingbooks per i programmatori seri, e sono tutti "vecchi" abbastanza da non essere chiaramente una moda passeggera, ma raccomandazioni durature non limitate da un particolare linguaggio, ambiente o set di strumenti.

+0

-1: Il programmatore pragmatico è un ottimo libro, ma i modelli di progettazione IMO dovrebbero essere i primi nella lista. L'ho letto quando avevo esattamente circa 1 anno di esperienza di programmazione ed è stato un vero colpo d'occhio per me. Programmare per 5 o anche 10 anni senza aver mai sentito parlare di modelli di progettazione mi sembra un'enorme perdita di tempo. –

+2

Credo che un nuovo sviluppatore abbia bisogno di imparare come camminare prima (cioè il programma "nel piccolo") prima di imparare a correre (cioè programmare "nel grande"); mentre Patterns è in gran parte focalizzato o meglio serve applicazioni su larga scala o programmazione di sistema. Preferisco che uno sviluppatore apprenda buone basi (basi) prima di rischiare di sovrascrivere ogni applicazione attraverso l'uso cieco dei Pattern. – mctylr

+0

Non so molto di questa roba da prestito tra biblioteche. Suppongo che sia un servizio che ti consente di prendere in prestito libri da biblioteche non nella tua zona, ma puoi prendere in prestito libri da un altro paese? Ho cercato "The Pragmatic Programmer" in quel sito che hai collegato, e la libreria più vicina che contiene quel libro è in Hong Kong. – cornjuliox

2

Suggerisco Structure and Interpretation of Computer Programs, che è disponibile on-line in forma di libro, così come un corso on-line.

Non è un libro sui modelli di progettazione, ma ti aiuterà a sviluppare buoni fondamenti per la creazione di applicazioni.

2

Aggiungerei sicuramente un altro libro. Penso che Clean Code di Bob Martin sia un ottimo libro per dirti come scrivere codice che sia gestibile. Introduce diverse semplici regole che portano a un codice che è molto ben strutturato e leggibile.

2

Il modo migliore per apprendere una buona progettazione del software è scrivere codice in diversi modi, leggere il codice scritto da altri e imparare cosa funziona e cosa non è di prima mano.

Quando si scrive il codice, porsi le seguenti domande:

  1. Come faccio a provarlo?
  2. Come faccio a eseguirne il debug?
  3. Cosa mi trovo a fare ripetutamente?

Sono sicuro che altre persone hanno altre idee, in base alle proprie esperienze.

1

Wow, mi chiedo perché nessuno abbia detto fino ad ora che U davvero non dovrebbe andare troppo in profondità nella teoria. Dopo un anno il codice Ur è brutto. Niente da fare a riguardo. Se U ottiene la maggior parte delle cose che vuoi finire, è già molto bello. Ma U non può imbrogliare il cervello di Ur con la teoria. Continua a scrivere e adirati per il codice di Ur. Questo è il modo migliore per scrivere meglio. Prenditi il ​​tempo di pensare a come scrivere codice funzionante in un modo più leggibile/usabile/manutenibile tutte le volte che puoi. E: Leggi il codice di altri popoli + ottieni recensioni sul codice Ur! Dovrebbero esserci persone là fuori che possono scrivere meglio di U. Impara con l'esempio!

E forse il 20% del tempo di programmazione Ur (che significa se il codice U ogni giorno, non più di 2 mesi all'anno!) Ottiene una certa teoria.

Perché non iniziare con le masse di teoria? U uccidi la motivazione di Ur e l'istinto di Ur. Ma quando sei seduto lì e cerchi di risolvere un problema, si tratta soprattutto dell'istinto giusto.Con troppa teoria U ripensiamo al problema e alle soluzioni di Ur. Ma l'istinto di Ur sarà ancora al livello dell'esperienza di Ur, non importa quanto tu abbia letto.

(scusate, se male l'inglese, non mio mothertounge)

Problemi correlati