La manutenibilità del codice è la sinergia realizzata quando applichiamo tutti quegli assiomi di codifica, regole empiriche, principi, ecc. È più arte che scienza. Nella misura in cui abbiamo cotto in una quantità appropriata di tutte queste cose, la base di codice è mantenibile. Il codice non è gestibile (sì / no, on / off, o / o) solo perché puoi modificarlo (o meno).
Tuttavia, il test dell'acidità della manutenibilità sta tentando di cambiare il codice. Nella misura in cui il codice resiste o non resiste, l'interazione con esso definisce la sua manutenibilità.
La manutenibilità ha "abilità". Compreso, ma non limitato a
- leggibilità
- comprensibilità
- mutevolezza
- testability
- affidabilità
- altri?
Come possiamo raggiungere queste abilità?
Attraverso l'applicazione di tutti quei principi e linee guida del software che hai mai o forse mai sentito nominare. Ad esempio:
- Buoni commenti
- variabile descrittiva, metodo, nomi di classe
- Limita i metodi a non più di una pagina di lunghezza
- Massimizza la coesione e minimizza l'accoppiamento
- incapsula ciò che rimane lo stesso
- incapsula ciò che cambia
- disposizione del codice / linee guida di formattazione applicate in modo coerente
- Solo un punto di ingresso e un solo punto di uscita.
- ... e molti, molti, altri ...
Per una buona manutenzione, è necessario considerare tutti, sempre, a tutti i livelli del codice e applicarli in un mix (non "il") appropriato. Inoltre, e non posso enfatizzare abbastanza, nessun principio funziona meglio (o molto bene, forse) da solo.
Cerca le tue strade per Damasco
Diversi anni fa due cose si sono incontrate. Una serie di programmi che erano letteralmente non mantenibili e la mia scoperta di Code Complete di Steve McConnell. Questo libro era la mia bibbia per riscrivere tutto quel codice peggio del fallimento e il confronto "prima e dopo" del codice era a dir poco rivelatore.
Trova le tue strade per Damasco. È un ambiente ricco di obiettivi.
Leggi Codice completo
Non posso esagerare su quanto sia buono questo libro per l'apprendimento dei principi fondamentali di sviluppo del software.