2009-02-07 12 views
25

Alla fine, il codice viene compilato (eventualmente) nelle istruzioni per una CPU. Il codice, tuttavia, (secondo la mia modesta opinione) è che gli esseri umani leggano, aggiornino e interagiscano con loro. Questo mi porta alla seguente osservazione:È il codice per i computer o per le persone?

Il codice che è illeggibile da altri ingegneri, anche se funzionale, è codice errato.

Con questo in mente, cosa può fare questo programmatore per rendere il codice più facilmente leggibile dagli esseri umani?

  • Convenzioni di denominazione? (Joel ha una buona dose da dire su quello)

  • Codice Struttura/Layout? (per favore, per amore di dio, non entrare nel dibattito sul piazzamento {)

  • Phrasing? (E 'possibile scrivere codice che sembra più la lingua inglese)

Ci sono buone articoli là fuori oltre Joel's.

+4

Un commento Snide, condiscendente e inutile in meno di 20 parole. Molto bene. – haseman

risposta

38

“Qualsiasi sciocco può scrivere codice che un computer può capire. Buone programmatori di scrivere codice che gli esseri umani possono capire “- Martin Fowler, 'Refactoring:. Migliorare la progettazione di codice esistente'

Ma dal momento che hai già raggiunto questa conclusione da soli, basti dì che questo è un argomento enorme. Non è qualcosa su cui potrai ottenere una singola risposta. Rendere il tuo codice gestibile non è limitato allo stile di codifica, ma coinvolge anche il tuo design generale e il tuo processo di costruzione. Ecco alcuni tag su questo sito in cui praticamente tutte le domande e le risposte saranno incidere su questo argomento:

+0

Grazie per i collegamenti, sono ovviamente nuovo qui, mi giro intorno. – haseman

+2

"Qualsiasi pazzo può scrivere codice che un computer può capire" ... non tutti i pazzi possono farlo davvero –

+1

Nella scrittura "Qualsiasi pazzo può scrivere codice che un computer può capire", Fowler allude probabilmente a Silvanus Phillips Thompson's * Calculus Made Facile *, che si riferisce agli "idioti" in tutta l'introduzione, compresa la famosa frase "Quello che uno sciocco può fare, un altro può", a cui sono stati riferiti sia Martin Gardner che Richard Feynman. –

1

Elemento mancante: commenti.

Anche se il codice è perfettamente leggibile per il suo autore, potrebbe non essere adatto a tutti.

+7

Si dovrebbe scrivere codice in modo tale che possa essere compreso senza commenti. I commenti dovrebbero essere usati con parsimonia e solo quando è veramente necessario. Troppi commenti possono essere più illeggibili di troppo pochi. – tvanfosson

55

Sì.

Se il computer non lo esegue, è rotto. Se la gente non può leggerlo, sarà rotto. Presto.

+0

Devo non essere d'accordo. Se qualcuno non può leggerlo, non significa che il codice è rotto. Rende molto difficile risolverlo se è rotto, ma la leggibilità di per sé non costituisce un codice funzionante. –

+24

Ora. Tim, torna indietro e leggi quello che ho detto di nuovo. –

+2

@ Charlie: questa è la mia frase preferita di sempre. –

4

<sarcasm> Il codice deve essere letto solo da una macchina. Fintanto che il risultato finale soddisfa pienamente le esigenze dell'utente, non importa come sia il codice. </sarcasm>

Ora codice gestibile o codice che può cambiare, questa è una storia completamente diversa.

Costruiresti una casa con un piano scarabocchiato sul retro di un tovagliolo o buttare via i progetti dopo aver finito di costruire una casa in cui potresti voler aggiungere una stanza in un giorno?

+2

-1: tutto il codice viene mantenuto. –

+0

No scherzo? Forse hai notato un * suggerimento * di sarcasmo nel mio tono ... –

+1

Mi è piaciuta l'analogia. – user51568

2

Non utilizzare hungarian notation in un linguaggio tipografico.

+1

Le app ungheresi e Systems ungherese sono molto diverse. Non c'è niente di sbagliato in Apps ungherese e può essere molto utile in molte situazioni. Niente di male nemmeno con i sistemi ungheresi ... ma le limitazioni sono grandiose. –

+0

In una lingua typesafe, la lingua imposta il tipo e il prefisso ungherese inizierà a perdere la sincronizzazione a lungo termine. Ecco cosa c'è di sbagliato in questo. –

+0

La notazione ungherese dovrebbe essere vietata tranne in Visual Basic (nota della parola chiave BASIC). – Kredns

1

la mia opinione è che tutto è relativo.

Quando è necessario modificare il codice, il codice è per te, quando viene eseguito per la macchina.

Se un codice è funzionale, ha il potenziale di essere letto.

L'essere umano e cooperativo in te dovrebbe renderlo facilmente leggibile agli altri umani, ma alla fine, a parte le convenzioni, la leggibilità del codice potrebbe a volte essere negli occhi di chi guarda.

Più facile è la lettura del codice da parte delle persone, più facile può essere modificato e gestito, poiché l'evoluzione trae beneficio dal numero di contributi/contributori applicati a un problema, questo tipo di codice può essere dichiarato migliore di illeggibile codice.

Ma in ultima analisi, il codice deve essere trasformato in una serie di istruzioni alla macchina.

Le intenzioni umane tradotte in qualcosa che la macchina può seguire, quindi il codice è per entrambi, uno alla volta.

26

programmi dovrebbe essere scritto per le persone a leggere, e solo incidentalmente per macchine da eseguire.

- da "Struttura e Interpretazione dei programmi per elaboratore" di Abelson e Sussman

+1

Troppe persone lo interpretano erroneamente: il codice viene letto più volte di quanto non venga eseguito. – user51568

+2

No, penso che il suo significato sia chiaro. Inoltre, dovresti scrivere codice leggibile non solo da altri, ma anche dal futuro te che leggerà il codice dopo un po 'di tempo (e avrai dimenticato tutti i dettagli non scritti su di esso). –

4

Roedy Verde ha scritto una vasta guida intitolata: Unmaintainable Code.

"Con questo in mente, che cosa può questo programmatore fare per rendere il codice più facilmente letto da esseri umani?"

Risposta: Leggi questa guida e applica il contrario di tutto ciò che dice alle tue attività di sviluppo.

Citazione dalla sezione generale principi:.

"Per sventare il programmatore di manutenzione, bisogna capire come pensa Ha vostro programma gigante Non ha tempo di leggere tutto,. molto meno capirlo. vuole rapidamente trovare il posto per fare il suo cambiamento, farlo e uscire e non hanno effetti collaterali imprevisti dal cambiamento .

Guarda il tuo codice attraverso un tubo di carta da bagno . Può vedere solo un piccolo frammento di programma alla volta. Si vuole assicurarsi che non possa mai ottenere a l'immagine grande da farlo. Tu vuoi rendere il più difficile possibile per lui per trovare il codice che sta cercando per. Ma ancora più importante, vuoi per renderlo il più scomodo possibile per per ignorare tranquillamente qualsiasi cosa.

I programmatori sono cullati in conformità con le convenzioni . Di ogni una volta ogni tanto, violando in modo sottile la convenzione , lo costringi a leggere ogni riga del codice con una lente di ingrandimento .

Si potrebbe ottenere l'idea che ogni caratteristica lingua rende il codice impossibile da mantenere -. Non è così, solo se correttamente utilizzati indebitamente"

Mentre è un saldamente ironia, in realtà è una lista molto utile (a parte le pubblicità odiose) di cosa evitare se ti interessa scrivere codice leggibile/controllabile

11

Al compilatore non interessa se il tuo codice è scritto in modo pulito o mess non leggibile - purché la sintassi sia corretta , il codice verrà compilato e verrà eseguito.

Tuttavia, quando si tratta di manutenzione del codice, il codice scritto in modo pulito per le persone sarà molto utile. Dal punto di vista del business case, quanto più breve è necessario per capire il codice per un nuovo programmatore, tanto meno denaro è necessario per portare la nuova persona alla massima velocità. Pertanto, il codice più pulito ha più valore. Qual è il punto in cui il codice illeggibile viene eseguito il 5% più velocemente quando il programmatore impiegherà il 100% di tempo in più per la comprensione? Dopo tutto, i programmatori costano un bel po 'di soldi.

Scrivere codice seguendo gli standard di codifica per lo stile, la denominazione delle variabili e tale è importante per mantenere il codice scritto da più persone per essere coerente. Una base di codice coerente che segue un buon standard di codifica sarà più gestibile.

Spesso, quando si tratta di ottimizzare il codice, può trasformarsi in un pasticcio illeggibile, ma in generale, i compilatori sono diventati meglio in questi giorni ad ottimizzare, in modo da avere il codice più chiaramente scritto migliorerà anche le probabilità che il compilatore cattura determinati costrutti ed eseguire ottimizzazioni su di esso, portando a prestazioni migliorate.

Scrivere per le persone, non per la macchina.

3

consiglierei di dare un'occhiata a Clean Code da Robert Martin. È un'ottima guida su come rendere il tuo codice più leggibile e, beh, pulito.

3

La mia opinione è un po 'tangibile: non si tratta di leggibilità, ma di manutenibilità.

Leggere è solo guardare il codice e pensare di poterlo leggere. Di solito si presume che, per essere leggibile, deve essere leggibile da qualcuno che non si è impegnato a comprenderlo.

Il mantenimento è apportare modifiche per correggere i bug o implementare i requisiti nuovi/modificati. Leggere è solo una parte di quel processo. Non conosco alcun codice gestibile che non richieda una curva di apprendimento da parte del manutentore, e a qualcuno che non ha scalato quella curva il codice sembra "non leggibile".

Allo stesso tempo, penso che sia parte della responsabilità di un programmatore di insegnare al manutentore ad aiutarli a scalare la curva di apprendimento.Un modo per farlo è lasciare istruzioni passo-passo su come eseguire il tipo di cambiamenti futuri che potrebbero essere previsti.

Spesso vedo un codice gonfio di spazi vuoti, in modo che lo schermo non si adatti a lui e viene fornito un commento dettagliato e commenti in gabby. Questo dà l'impressione di leggibilità.

Problemi correlati