Ci sono molti modi per affrontare questo programma, ma qualunque cosa tu faccia, non iniziare senza avere una chiara idea di dove stai andando. Nella tua risposta al mio commento, tu dici che
we have started doing all the requirements and documentation including various diagrams. I know what the program should do but I am not sure how to separate that into classes, methods, etc.
Non mi preoccuperei troppo di questo. Quello che devi fare come primo passo è essere veramente certi del "flusso" del tuo sito. Pensare prima in termini di usabilità, quindi abbozzare i processi in background come se si stesse progettando una macchina. Non lasciare che le lezioni e le pratiche di codifica ti fermino in quella fase.
Quando quella parte è finita, dovresti essere in grado, con l'aiuto di alcuni documenti, di spiegare ai programmatori e ai novizi in che modo tutto funziona, sia dal punto di vista del front-end che dal punto di vista algoritmico. Se non puoi, allora non è abbastanza chiaro. Tornaci.
Quando questa parte è terminata, viene eseguito il 50% della progettazione del codice. Da lì in poi, ci sono molti modi per andare. Ad esempio, è possibile elencare tutte le funzionalità (funzionalità) necessarie, tutti gli archivi di dati (database, filesystem, xml ...) e tutti i moduli front-end e vedere quali collegamenti con ciò che è più naturalmente possibile. Da lì, vedere quali sono le caratteristiche comuni e creare classi madri e vedere quali funzioni devono essere aggiunte nelle sottoclassi. Prestare particolare attenzione a quali dati immettono una funzione e quali dati la lasciano, e assicurarsi che le funzioni correlate funzionino bene insieme.
Personalmente sono un fan di che ottiene segnali reali di 37 (è assolutamente da leggere se non lo conosci ). Quello che fanno è progettare l'interfaccia prima e poi andare da lì. Aiuta a concentrarsi su ciò che conta davvero e controlla ad ogni passaggio che il flusso è buono.
La mia variazione personale su questa tecnica è la seguente: scrivo prima il mio codice finale. Questo mi aiuta a capire cosa vorrei che facessero i miei corsi. Se il mio codice diventa troppo complesso, allora lo cambio al volo (non fa nulla comunque, non ho ancora creato una singola classe) e inizio all'implementazione delle funzionalità.
Questo è in qualche modo simile a sviluppo basato sui test , anche se più semplice da avviare, perché ha bisogno di 0 preparazione.
E infine, anche se le buone pratiche di codifica sono un must, e sono assolutamente d'accordo che dovrebbero essere utilizzate a tutti i costi, ma non rendono l'errore del principiante di essere ostacolato da loro. Ciò che conta è che il codice funzioni, soprattutto. Quindi tieni a mente tutte le cose buone che hai imparato, ma non stressarti troppo e immergiti semplicemente. Il design iterativo è il modello migliore (almeno per piccoli gruppi). Costruisci qualcosa che funzioni e ottimizza in seguito (prova comunque a mantenere un livello minimo di pulizia o non sarai in grado di ottimizzare affatto).
Spero che ti aiuti.
[modifica]
Ho dimenticato di dirlo: se non lo sei già, usare un sistema di subversion può far risparmiare un sacco di mal di testa a lungo termine. Bitbucket offre repository privati ed è abbastanza facile impostare mercurial su linux & Windows (non so di Apple, ma suppongo sia altrettanto facile)