Domanda

Sono ad un punto della mia carriera da freelance in cui ho sviluppato diverse applicazioni web per le piccole e medie imprese che supportano cose come la gestione dei progetti, la prenotazione / prenotazione e la gestione della posta elettronica.

Mi piace il lavoro, ma scopro che alla fine le mie applicazioni arrivano a un punto in cui la manutenzione per la manutenzione è molto alta. Ripenso al codice che ho scritto 6 mesi fa e trovo che devo dedicare un po 'a imparare di nuovo come l'ho codificato in origine prima di poter apportare una correzione o aggiunte di funzionalità. Cerco di esercitarmi con i framework (ho già usato Zend Framework e sto considerando Django per il mio prossimo progetto)

Quali tecniche o strategie usi per pianificare un'applicazione in grado di gestire molti utenti senza rompere e mantenere il codice abbastanza pulito da mantenerlo facilmente? Se qualcuno ha qualche libro o articolo che potrebbe raccomandare, anche questo sarebbe molto apprezzato.

È stato utile?

Soluzione

Sebbene ci siano certamente buoni articoli su questo argomento, nessuno di loro è un sostituto dell'esperienza del mondo reale.

La manutenibilità non è nulla che puoi pianificare direttamente, tranne che per progetti molto piccoli. È qualcosa di cui devi occuparti durante l'intero progetto. In effetti, la creazione anticipata di un sacco di classi e codice di infrastruttura può produrre un codice che è ancora più difficile da comprendere rispetto al codice spaghetti ingenuo.

Quindi il mio consiglio è di ripulire i tuoi progetti esistenti , riformattandoli continuamente. Guarda le parti che sono state dolorose da cambiare e cerca soluzioni più semplici che siano più facili da capire e da adattare. Se il codice è anche troppo male per quello, considera di riscriverlo da zero.

Non avviare nuovi progetti e aspettarti che abbiano successo, solo perché hai letto altri articoli o utilizzato un nuovo framework. Invece, identifica i fallimenti dei tuoi progetti esistenti e risolvi i loro problemi specifici . Ogni volta che è necessario modificare il codice, chiedersi come ristrutturarlo per supportare cambiamenti simili in futuro. Questo è ciò che devi fare comunque, perché ci saranno cambiamenti simili in futuro.

Facendo quei refactoring ti imbatterai in varie domande specifiche puoi chiedere e leggere articoli su. In questo modo imparerai di più oltre a porre domande generali e leggere articoli generali su manutenzione e framework.

Inizia a ripulire il tuo codice oggi . Non rimandarlo ai tuoi progetti futuri.


(Lo stesso vale per la documentazione. I primi documenti di tutti erano molto cattivi. Dopo diversi mesi si rivelano troppo dettagliati e pieni di cose non importanti. Quindi completa la documentazione con soluzioni ai problemi che davvero

Altri suggerimenti

Consiglio onestamente di guardare Martin Fowlers Patterns of Enterprise Application Architecture . Discute molti modi per rendere la tua applicazione più organizzata e gestibile. Inoltre, consiglierei di usare i test unitari per darti una migliore comprensione del tuo codice. Il libro di Kent Beck su Test Driven Development è un'ottima risorsa per imparare come affrontare modifica del codice tramite unit test.

Per migliorare la manutenibilità potresti:

  • Se sei l'unico sviluppatore, adotta uno stile di programmazione e mantienilo. Ciò ti darà fiducia in seguito quando navighi attraverso il tuo codice su cose che potresti aver fatto e cose che non avresti assolutamente fatto. Essere sicuri di dove cercare e cosa cercare e cosa non cercare ti farà risparmiare un sacco di tempo.

  • Prenditi sempre tempo per aggiornare la documentazione. Includere l'attività nel piano di sviluppo; includi quel tempo nel piano come parte delle modifiche o delle nuove funzionalità.

  • Mantieni la documentazione bilanciata: alcuni diagrammi di alto livello, commenti significativi. I migliori commenti dicono che non può essere letto dal codice stesso. Ad esempio ragioni commerciali o "perché" dietro alcuni blocchi di codice.

  • Includi nel piano lo sforzo di mantenere aggiornati la struttura del codice, i nomi delle cartelle, gli spazi dei nomi, gli oggetti, i nomi variabili e di routine e che riflettono ciò che effettivamente fanno. Ciò contribuirà notevolmente a migliorare la manutenibilità. Chiama sempre una spade " spade " ;. Evita grossi pezzi di codice, strutturalo con mezzi disponibili nella tua lingua preferita, dai a pezzi grossi nomi significativi.

  • Basso accoppiamento e alta coerenza. Assicurati di essere aggiornato con le tecniche per raggiungerli: progettazione per contratto, iniezione di dipendenza, aspetti, modelli di progettazione ecc.

  • Dal punto di vista della gestione delle attività, è necessario stimare più tempo e addebitare tariffe più elevate per i lavori non continui. Non esitare a far conoscere al cliente che hai bisogno di più tempo per fare piccole modifiche non continue diffuse nel tempo rispetto a progetti continui più grandi e manutenzione in corso poiché le spese generali di amministrazione e analisi sono maggiori (devi gestire e analizzare ogni cambiamento incluso l'impatto sul sistema esistente separatamente). Un vantaggio che il tuo cliente otterrà è la maggiore aspettativa di vita del sistema. L'altro è una documentazione accurata che conserverà la loro opzione di chiedere l'aiuto di qualcun altro qualora decidessero di farlo. Entrambi proteggono gli investimenti dei clienti e rappresentano un forte punto di forza.

  • Usa il controllo del codice sorgente se non lo fai già

  • Conserva un registro dettagliato di tutto ciò che è stato fatto per il cliente, oltre a qualsiasi comunicazione importante (un semplice computer o carta basata su CMS). Aggiorna la tua memoria prima di ogni compito.

  • Tieni aperto un registro di problemi, idee, suggerimenti per cliente; aggiorna nuovamente la memoria prima di iniziare un compito.

  • Pianifica in anticipo come verrà condotto il supporto post-implementazione, discutilo con il cliente. Rendi i tuoi sistemi facili da mantenere. Pianificare la parametrizzazione, gli strumenti di monitoraggio, i controlli di integrità integrati. Vendi supporto post-implementazione al cliente come parte del contratto iniziale.

  • Espandi assumendo, anche se hai bisogno di qualcuno solo per fornire quel supporto post-implementazione, esegui i bit di amministrazione.

Lettura consigliata:

Il consiglio più importante che posso dare dopo aver contribuito a trasformare una vecchia applicazione Web in un'applicazione Web estremamente disponibile e molto richiesta è di incapsulare tutto. - in particolare

  1. Usa buoni principi e framework MVC per separare il tuo livello di visualizzazione dalla tua logica aziendale e dal modello di dati.
  2. Utilizza un solido livello di persistenza per non associare la tua logica aziendale al tuo modello di dati
  3. Pianifica l'apolidia e il comportamento asincrono.

Ecco un eccellente articolo su come eBay affronta questi problemi http://www.infoq.com/articles/ebay-scalability-best- pratiche

  1. Utilizza un sistema framework / MVC. Più il codice è organizzato e centralizzato, meglio è.

  2. Prova a usare Memcache. PHP ha un'estensione integrata, ci vogliono circa dieci minuti per configurarlo e altri venti per inserire la tua applicazione. Puoi memorizzare nella cache tutto quello che vuoi - inserisco nella cache tutti i miei record del database - per ogni applicazione. Vaga.

  3. Consiglierei di usare un sistema di controllo del codice sorgente come Subversion se non lo sei già.

Dovresti considerare forse l'utilizzo di SharePoint. È un ambiente che è già progettato per fare tutto ciò che hai menzionato e ha molte altre funzionalità a cui forse non hai pensato (ma forse ti serviranno in futuro :-))

Ecco alcune informazioni dal sito ufficiale.
Esistono 2 diversi ambienti SharePoint che è possibile utilizzare: Windows Sharepoint Services (WSS) o Microsoft Office Sharepoint Server (MOSS). WSS è gratuito e viene fornito con Windows Server 2003, mentre MOSS non è gratuito, ma ha molte più funzionalità e copre quasi tutte le esigenze della tua azienda.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top