Cos'è il codice bello? [chiuso]

30

Spesso leggo che gli sviluppatori devono scrivere codice bello, ma per un principiante come lo sono rimane oscuro di ciò che è bello codice e come lo riconosci?

La domanda corollaria è: Come scrivere codice bello e quali sono alcune abitudini pratiche per migliorare la qualità del tuo codice? , cosa dovrei preoccuparmi di creare il codice che scrivo in modo bello (e cosa devo fare? imparare).

    
posta torr 12.08.2013 - 04:30
fonte

8 risposte

55

"La bellezza è comprata dal giudizio dell'occhio".

Detto questo, penso che la maggior parte dei programmatori concorderà sul fatto che un codice bello dimostra un equilibrio tra chiarezza e trasparenza, eleganza, efficienza ed estetica.

  • Chiarezza e trasparenza : la chiarezza è la facilità con cui un lettore può dedurre ciò che fa il codice. Il codice trasparente fa quello che sembra fare. Se il codice sembra fare una cosa, ma in realtà fa qualcos'altro (o qualcosa di più), non è trasparente - è fuorviante.

  • Eleganza : ci sono molti modi per implementare la maggior parte degli algoritmi, ma alcuni modi sono maldestri mentre altri modi sono accurati e aggraziati. La concisione spesso aggiunge eleganza, ma un eccesso di concisione può ridurre la chiarezza.

  • Efficienza : evitare l'uso non necessario di risorse (come tempo di CPU, memoria e I / O).

  • Estetica : essere facile per gli occhi. Questo è abbastanza soggettivo. Principalmente si riduce allo stile. Una considerazione importante è avere uno stile coerente . Il codice che cambia, ad esempio, lo stile di indentazione a metà, è brutto.

risposta data 12.08.2013 - 05:04
fonte
20

Non lasciare che le persone ti prendano in giro pensando che quel bel codice sia il seguente:

  • algoritmi intelligenti
  • caratteristiche del linguaggio subdolo
  • risoluzione di un problema con il minor numero di tratti di chiave

Perché non lo è. Il codice è carino , e sicuramente vale la pena darci un'occhiata, ma non è il tipo di codice con cui vuoi stabilirti.

E tu sai che il metamorfismo statico metamorfico ricorsivo e immaginativo che eredita lambda variatic ... o qualunque cosa tu abbia letto sul web? Potresti essere desideroso di saltare su trucchi innovativi e ingegnosi senza una ragione chiara per usarli. Ma il codice che spinge i confini di una lingua non è bello neanche.

Sono sexy .
Un sacco di divertimento, ma chiediti questo: voglio davvero passare il tempo ad esplorare l'anatomia di questa lingua, o voglio lavorare insieme con un linguaggio e costruire qualcosa di bello? Dopo tutto, un linguaggio di programmazione è semplicemente lo strumento per creare.

Quindi qual è il codice bello allora?

Codice bello = codice gestibile. CHE È!
QUESTA È LA FORMULA!

Se puoi scrivere qualcosa, tornare indietro qualche mese dopo e continuare a fare progressi, è bellissimo. Se un anno dopo ti rendi conto che vuoi aggiungere funzionalità e modificare una funzione esistente, e riesci a farlo con relativa facilità, allora è meraviglioso. Se altre persone possono entrare nella tua base di codice e capire rapidamente cosa sta succedendo perché le cose sono organizzate, avranno più capelli e saranno anche belle.

Quindi la vera domanda che vuoi porre è: "Come posso scrivere un codice più gestibile?". Temo che questa sia una domanda più grande ed è piuttosto una disciplina creativa. Continua a scrivere il codice, ma questa volta non chiediti se può essere più bello. Chiediti se puoi renderlo più gestibile.

    
risposta data 12.08.2013 - 13:13
fonte
4

La mia opinione su questo è che "Beautiful Code" non è un termine oggettivo o particolarmente utile. E non dovremmo provare a definirlo.

Le definizioni di dizionario tipiche della parola inglese "bellezza" sono:

  • "1. la combinazione di tutte le qualità di una persona o di una cosa che delizia i sensi e compiacere la mente"
  • "1. la qualità presente in una persona o cosa che dà intenso piacere estetico o profonda soddisfazione alla mente o ai sensi."
  • "1. La qualità che dà piacere alla mente o ai sensi ed è associata a proprietà come l'armonia della forma o del colore, l'eccellenza artistica, la veridicità e l'originalità."

(Sorgente link )

Il filo conduttore è che "bellezza" riguarda ciò che è esteticamente piacevole. Questo è necessariamente soggettivo ... come illustrato dal detto "La bellezza è negli occhi di chi guarda".

Possiamo applicare la parola "bellezza" al codice e il significato ovvio è che il codice è "esteticamente piacevole".

Ma per poi dire che "codice bello" ha un certo insieme di attributi (come suggerito da altre risposte) è una contraddizione del significato ovvio di esteticamente piacevole. L'estetica riguarda il modo in cui le persone ... le singole persone ... percepiscono le cose.

O per dirla in altro modo, c'è qualcosa di ripugnante su qualcuno che mi dice che cosa dovrei pensare è bello, sia nelle persone, nelle opere d'arte, sia nel ... codice.

Per quanto mi riguarda il codice bello è un codice che penso sia bello, e basta. È soggettivo e individuale, e lasciamolo lasciarlo.

    
risposta data 12.08.2013 - 05:09
fonte
2

Ecco il mio consiglio.

Guarda le risposte a Come può spieghi "codice bello" a un non programmatore? e vedi quali caratteristiche dicono di concentrarsi. Quindi prendi un libro come Codice completo e leggilo per ottenere consigli su come scrivere un codice migliore.

Ad un certo punto ti colpirà mentre guardi il tuo vecchio codice, "Questo è brutto." Sarà una reazione estetica diretta. Guardandolo capirai che stai visualizzando il tuo codice come un programmatore e puoi vedere la bruttezza perché sai che aspetto dovrebbe avere il codice migliore.

    
risposta data 12.08.2013 - 08:15
fonte
1

Solo perché leggete spesso sul bel codice non significa che le persone che ne scrivono abbiano la stessa definizione. Tristemente, a giudicare dalla tua domanda, non sembra che si siano nemmeno presi la briga di definirlo in primo luogo.

Per me il bel codice è:

  • espressivo
  • Concise

Il codice conciso che non è espressivo può essere criptico e il codice espressivo che non è conciso tende a essere noioso e noioso da leggere, quindi è necessario entrambi.

Non includerei la manutenibilità come parte di ciò che rende il codice bello, perché la bellezza è qualcosa che vedi / leggi, non qualcosa su cui agisci. Ma poi di nuovo è la mia opinione personale.

    
risposta data 12.08.2013 - 14:03
fonte
0

Il termine codice bello è un termine molto vago e astratto. È facile capire cosa rappresenta e cosa significa, ma non dovrebbe mai essere visto come qualcosa di più di un obiettivo secondario.

Mi ricorda molto la metrica della copertura del codice. Quando ottieni il numero abbastanza alto puoi rilassarti e andare su qualcos'altro. Avere una base di codice con una copertura di circa l'80% è ottima, non a prova di proiettile, ma abbastanza per rilassarsi e fare altre cose. Avere una copertura del 40% è piuttosto spaventoso e dovrebbe incoraggiarti a ottenere quel numero.

Il punto è che la copertura del codice è davvero significativa solo se il numero è basso. Quindi non lasciare che sia basso. Quando la copertura sale a un certo punto, passa a qualcos'altro.

Allo stesso modo un bel codice è fantastico. Se hai un bel codice, ottimo, passa a qualcos'altro. Non stressarti troppo. Non colpirai mai quel marchio del 100% e, se lo fai, scoprirai di esserti concentrato troppo su quello che legge, o come appare, e non abbastanza su quello che fa, o come lo fa . Quindi prendi un segno ragionevole e poi fermati.

Ma se il tuo codice è fugace, se è un gigantesco disordine di codice spaghetti, se ti fa male fisicamente di aprire il file, se non hai commenti o documentazione ecc ecc., allora risolvilo. E fallo al più presto.

Scoprirai che con il tempo la tua base di codici diventa generalmente più pulita, generalmente più luminosa e generalmente più bella e, soprattutto, più utilizzabile quando ti concentri su come renderla meno fugace. Scrivere un codice bello non è un processo in un'unica fase.

Non esiste una filosofia magica. I suoi 1000 passaggi più piccoli sono tutti eseguiti insieme, ognuno dei quali ha uno scopo concreto che non ha nulla a che fare con quanto sia bello il codice. Ma quando li servi tutti insieme, formano un codice bellissimo come la somma delle sue parti. Come Voltron. O pianeta capitano.

    
risposta data 12.08.2013 - 12:00
fonte
0

Sono d'accordo con le risposte qui in realtà, ma prendendo un approccio meno tecnico direi che il codice bello è un'espressione della chiarezza dei pensieri degli autori del problema che si manifesta attraverso un linguaggio ben formulato e preciso ma semplice .

Per me, guardare il codice bello è come guardare un'opera d'arte, vedere sempre nuovi dettagli che mostrano l'intenzione del produttore, ma anche come sono state realizzate le diverse parti, ognuna delle quali dà una risposta a così tante domande, e poi , infine, come la sua esistenza si sente come una legge naturale alla quale tutto si allinea in modo tale che possa essere descritto solo con parole di ammirazione: magnifico, stimolante, bello.

Quindi da quella prospettiva, nella tua carriera di programmatore potresti fare scoperte di codice bello che altri potrebbero non capire perché mancano di conoscenza o potrebbero non trovare più degno di nota in quanto sono stati rovinati da troppa bellezza;)

Il bel codice ha tutte le qualità pragmatiche come menzionato diversamente, sono assolutamente d'accordo.

    
risposta data 12.08.2013 - 15:11
fonte
0

Ho tre criteri:

  • Semplice: Almeno deve essere leggibile. Ad esempio, puoi scrivere un codice che funziona con O (1) per una soluzione con tonnellate di linee, ma preferisco il codice che funziona con 0 (n) risolve con poche righe. Questo potrebbe cambiare per situazioni estreme, ma all'inizio la semplicità è importante.
  • Riutilizzabile: il codice deve essere riutilizzabile, ma non sovrascritto. Se hai bisogno di un'operazione, dovresti definirla nel modo in cui puoi usarla anni dopo.
  • Rientro: forse questo non è un problema per te, ma per il livello principianti, questa è la prima cosa da risolvere.
risposta data 12.08.2013 - 15:16
fonte

Leggi altre domande sui tag