2010-05-24 21 views
16

Ho appena iniziato un nuovo lavoro e una delle cose di cui il mio nuovo capo mi ha parlato è stata la longevità del codice.Quanto estensibile dovrebbe essere il codice?

Ho sempre codificato per rendere il mio codice infinitamente estensibile e adattabile. Ho pensato che se qualcuno avesse intenzione di cambiare il mio codice in futuro, allora dovrebbe essere facile da fare.

Ma non ho mai avuto un'idea chiara di quanto lontano nel futuro dovrebbe essere.

Quindi il mio nuovo capo mi ha detto di non preoccuparsi che codifica per qualcosa di più che 3 anni nel futuro e il suo ragionamento era che i cambiamenti tecnologici, programmi scadono ecc

All'inizio ero un pò sorpreso e ha pensato che fosse un lavoro da sballo, ma più ci penso e più mi sto appassionando al concetto.

Qualcun altro ha un'opinione su quanto in futuro dovresti programmare?

risposta

7

Si dovrebbe codice per le specifiche, niente di più, niente di meno. Se le specifiche prevedono disposizioni per 30 anni, il codice viene codificato per 30 anni. Se la specifica fornisce disposizioni per 3 mesi, lo stesso vale.

Basta ricordare però, è anche necessario codice per la propria salute mentale. Tutto il codice che crei dovrebbe ottenere 3 elementi:

  • Codice da sostituire: questa è solo una buona pratica secondo me. Più sei sostituibile nella tua codifica, migliore è il codice che produci. Ciò fornisce un po 'di una situazione inversa: più si sostituisce il codice, più si guadagna valore.

  • Codice per essere produttivi: riutilizzo, riutilizzo, riutilizzo.

  • Il codice dovrebbe essere ben scritto: questa cosa non deve essere spiegata.
1

Codice bene, e guarda solo alla prossima consegna. Il codice ben scritto è infinitamente riconducibile/estensibile, sia scritto con questo in mente o meno. Il codice scritto male che è destinato ad essere estensibile raramente è in pratica.

4

Se davvero desidera un programma di lunga durata, sparare per fare in modo che le date in grado di gestire oltre 2038 (che è il prossimo "Y2K").

Date a parte, in che modo si codifica esattamente per un anno da oggi rispetto a dieci anni da oggi? O scrivi codice manutenibile o non lo fai; non puoi specificare esattamente per quanto tempo fino alla scadenza del tuo cambiamento.

suppongo si potrebbe sostenere che il prossimo livello della loro lingua sarà deprecare metodo Foo, ma se un metodo sta per essere deprecato, che è davvero più una cosa di qualità del codice e manutenibilità di quello che è di codifica per i futuri date .

1

Se stai seguendo le metodologie Agile alla lettera, dovresti solo scrivere il codice per il problema corrente. Questo è anche conosciuto come il principio YAGNI (non ne hai bisogno).

L'idea è che non si sa cosa sta arrivando dietro l'angolo, quindi non ha senso cercare di codificarlo.

Tuttavia, non penso che questo sia un approccio particolarmente ragionevole.

Anche se ci si trova in un ambiente Agile, si ha un'idea di ciò che si desidera che il codice sia in grado di eseguire diverse iterazioni lungo la linea e, pertanto, di codificarlo.

Mentre i programmi scadono e le tecnologie cambiano se si sta scrivendo quella app "killer" sarà in giro per molto più di 3 anni.

0

Quando si progetta il codice, è necessario tenere presente i possibili modi per estenderlo o richiedere nuove funzionalità, e si dovrebbe cercare di renderlo sufficientemente modulare che sia possibile aggiungere nuove funzionalità. Se c'è un punto in cui una decisione renderà più flessibile o estendibile, mentre un'altra decisione renderà più rigida, se c'è poco o nessun costo per essere più flessibile, allora ha senso andare con quello. Tuttavia, se il costo della via più flessibile è significativo, non farlo. A meno che tu non sappia per certo che avrai bisogno di quella funzione e che i costi sono giustificati, non dovresti impazzire nel tentativo di aggiungere tale funzionalità; se lo fai, molto probabilmente spendi molto per niente.

1

Ogni volta che mi codifica qualcosa, mi chiedo ...

è necessario? Se non ne hai bisogno, allora perché lo stai codificando?

Trovo che mi aiuti a evitare l'aggiunta di codice non necessario. Il codice non necessario è uno scarico. Ci vuole tempo lontano da altre attività. Aggiunge alle dimensioni e alla complessità del codice. Aggiunge valore al progetto, specialmente se la base di codice deve passare attraverso un processo di certificazione.

19

Uno dei punti di giudizio più difficili da raggiungere è l'estensibilità. Come capo, sono davvero irritato quando assegno qualcuno a un'attività di 2 ore e tre giorni dopo ci stanno ancora lavorando, perché hanno deciso che dovrebbe essere più estensibile in modo da aggiungere voci al file di configurazione e colonne alle tabelle e per cambiare 4 o 5 altri oggetti per accontentarlo e ora il documento di installazione non è aggiornato e lo script di distribuzione deve cambiare e il tester deve inserire un giorno o due cercando tutte le combinazioni e le permutazioni in modo che possiamo sapere che il codice è anche lavorando. Ma sono anche molto irritato quando qualcun altro, con un compito di due ore, lo trasforma in un compito di mezz'ora codificando tutto, anche l'indirizzo di posta elettronica che invia, e non capisce quando il resto del team si lamenta.

Se esisteva una regola semplice e veloce, tutti potevano essere programmatori esperti il ​​giorno in cui prima compilano un codice. Richiede esperienza e giudizio ed è probabilmente il giudizio più importante che acquisirai. E sai come ottieni un buon giudizio? Esperienza. E sai come ottieni esperienza? Cattivo giudizio.

+0

+1 @Kate, non posso essere più d'accordo con te. Questa è un'ottima risposta e spiega molto bene il motivo per cui a volte mi sento frustrato. :) – griegs

Problemi correlati