Commenti
- possibile duplicato di Scrittura / discussioni sullestetica del codice?
- È ' solo un modo di dire. La bellezza è negli occhi di chi guarda e, oltre a ciò, ' è tutta una questione di chiarezza delle istruzioni che ' hai fornito in un file di testo per risolvere un problema e con quanta facilità tu o chiunque altro potete modificarlo e mantenerlo in futuro. Oltre a ciò, quanto più bellezza trasuda il tuo codice dipende interamente da te: rientranze, struttura modulare, complessità, efficienza simultaneamente con facile leggibilità, convenzioni di denominazione, ecc.
- Potresti essere interessato a leggere Codice bellissimo: i principali programmatori spiegano come pensano allora!
- possibile duplicato di Come puoi spiegare " bellissimo codice " per un non programmatore?
Risposta
“La bellezza si acquista dal giudizio dellocchio”.
Detto questo, penso che la maggior parte dei programmatori concorderà sul fatto che un codice stupendo 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 qualcosaltro (o qualcosa di più), non è trasparente – è fuorviante.
-
Elegance : ci sono molti modi per implementare la maggior parte degli algoritmi, ma alcuni modi sono goffi mentre altri sono puliti e aggraziati. La concisione spesso aggiunge eleganza, ma uneccessiva concisione può ridurre la chiarezza.
-
Efficienza : evitare un uso non necessario di risorse (come tempo CPU, memoria e I / O).
-
Estetica : facile per gli occhi. Questo è abbastanza soggettivo. Dipende principalmente dallo stile. Una considerazione importante è avere uno stile coerente . Il codice che cambia, ad esempio, lo stile di rientro a metà è brutto.
Commenti
- una bella spiegazione, +1
- Vorrei eliminare " Efficienza ". Sebbene in senso stretto sia positivo, includerlo nellelenco può essere fuorviante nella migliore delle ipotesi. Normalmente è un sottoprodotto degli altri e dovrebbe essere una preoccupazione secondaria al momento della codifica. La ragione principale è che, per la maggior parte, si manifesta solo dopo che il compilatore ha operato la sua magia oscura.
- @Jubbat In effetti, a volte la soluzione più efficiente porta effettivamente a codice molto brutto. (Es. La classica funzione Fast Inverse Square Root)
- @DarrelHoffman Giusto, sebbene quel compromesso sia vero anche per più variabili che definiscono un buon codice, non solo lefficienza e il resto (cè una buona spiegazione lunga di questo in " Codice completo " – purtroppo ' non ricordo in quale sezione del libro, probabilmente vicino allinizio-)
- @Jubbat: Sono daccordo che lefficienza è di solito una preoccupazione secondaria, ma penso ancora che influenzi lequazione della bellezza.
Rispondi
Non lasciare che le persone ti ingannino facendoti pensare che un bel codice sia il seguente:
- algoritmi intelligenti
- funzioni linguistiche subdole
- risolvono un problema con il minor numero di pressioni di tasti
Perché non lo è. Un codice del genere è carino , e certamente vale la pena dare unocchiata, ma non è il tipo di codice con cui vuoi stabilirti.
E sai quel fantasioso polimorfismo statico meta-template ricorsivo che eredita i lambda variatici, o qualunque cosa hai letto online? Potresti essere desideroso di saltare su trucchi innovativi e ingegnosi senza una chiara ragione per usarli. Ma anche il codice che supera i confini di una lingua non è bello.
Sono sexy .
Molto divertente, ma chiediti questo: voglio davvero trascorrere del tempo esplorando lanatomia di questa lingua, o voglio lavorare insieme a una lingua e costruire qualcosa di bello? Dopo tutto, un linguaggio di programmazione è semplicemente lo strumento per creare.
Allora, qual è il codice bello ?
Bellissimo codice = codice manutenibile. QUESTO!
QUESTA “È LA FORMULA !
Se puoi scrivere qualcosa, torna su questo argomento qualche mese dopo e continua a fare progressi, allora è bellissimo. Se un anno dopo ti rendi conto che vuoi aggiungere anche delle funzionalità come modificare una funzionalità esistente, e riesci a farlo con relativa facilità, quindi QUELLA È bellissima. 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 fare è : “Come scrivo codice più gestibile?”. Temo che sia una domanda più grande ed è una disciplina piuttosto creativa. Continua a scrivere codice, ma questa volta non chiederti se può essere più bello. Chiediti se puoi renderlo più gestibile.
Commenti
- Per combattere i problemi che sollevi cè anche il consiglio di c2.com/cgi/wiki?KillYourDarlings
Risposta
La mia opinione su questo è che “Beautiful Code” non è un termine obiettivo o particolarmente utile. E non dovremmo cercare di definirlo.
Le definizioni tipiche del dizionario della parola inglese “beauty” sono queste:
- “1. la combinazione di tutti le qualità di una persona o cosa che deliziano i sensi e 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 larmonia della forma o del colore, leccellenza artistica, la veridicità e loriginalità.”
(Fonte http://dictionary.com )
Il filo conduttore è “bellezza” riguarda ciò che è esteticamente gradevole. 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 gradevole”.
Ma poi dire che “codice bellissimo” ha un certo insieme di attributi (come suggerito da altre risposte) è una contraddizione del ovvio significato di esteticamente gradevole. Lestetica riguarda il modo in cui le persone … singole persone … percepiscono le cose.
O per dirla in un altro modo, cè qualcosa di ripugnante in qualcuno che mi dice ciò che dovrei pensare sia bello, sia nelle persone, nelle opere darte o … nel codice.
Per quanto riguarda per quanto mi riguarda, il bel codice è un codice che penso sia bello, e basta. È soggettivo e individuale, e lascia che sia così.
Risposta
Ecco il mio consiglio.
Consulta le risposte a Come puoi spiegare " bellissimo codice " a un non programmatore? e guarda su quali caratteristiche dicono di concentrarsi. Quindi prendi un libro come Codice completo e leggilo per ricevere consigli su come scrivere un codice migliore.
A un certo punto ti colpirà mentre guardi il tuo vecchio codice , “Questo è brutto.” Sarà una reazione estetica diretta. E guardandolo ti renderai conto che stai visualizzando il tuo codice come un programmatore e puoi vedere la bruttezza perché sai come dovrebbe apparire un codice dallaspetto migliore.
Risposta
Solo perché leggi spesso di codice stupendo non significa che le persone che ne scrivono abbiano la stessa definizione. Purtroppo, a giudicare dalla tua domanda non sembra che si siano nemmeno preoccupati di definiscilo in primo luogo.
Per me un bel codice è:
- Espressivo
- Conciso
Il codice conciso che non è espressivo può essere criptico e il codice espressivo che non è conciso tende a essere gonfio e noioso da leggere, quindi hai bisogno di entrambi.
Non includerei la manutenibilità come parte di ciò che rende il codice bella, perché la bellezza è qualcosa che vedi / leggi, non qualcosa su cui agisci. Ma poi di nuovo è la mia visione personale.
Risposta
Il termine codice bello è un termine molto vago e astratto. È facile capire cosa rappresenta e cosa significa, ma non dovrebbe mai essere visto come un obiettivo secondario.
Mi ricorda molto la metrica di copertura del codice. Quando ottieni il numero abbastanza alto puoi rilassarti e passare a qualcosaltro. Avere una base di codice con circa l80% di copertura è fantastico, non a prova di proiettile, ma sufficiente per rilassarsi e fare altre cose. Avere una copertura del 40% è piuttosto spaventoso e dovrebbe incoraggiarti ad aumentare quel numero.
Il punto è che la copertura del codice è veramente significativa solo se il numero è basso. Quindi non lasciare che sia basso. Quando la copertura sale a un certo punto, passa a qualcosaltro.
Un codice altrettanto bello è fantastico. Se hai un codice carino, ottimo, passa a qualcosaltro. Non stressarti troppo. Non raggiungerai mai il 100% e, se lo fai, ti accorgerai di esserti concentrato troppo su come si legge, o su come appare, e non abbastanza su cosa fa, o come lo fa. Quindi raggiungi un punteggio ragionevole e poi fermati.
Ma se il tuo codice è fugace, se è un gigantesco pasticcio contorto di codice spaghetti, se ti fa fisicamente dolore aprire il file, se non hai commenti o documentazione ecc. ecc. ecc. E fallo al più presto.
Con il passare del tempo la tua base di codice finirà per diventare generalmente più pulita, generalmente più brillante e generalmente più bella e, cosa più importante, più utilizzabile quando ti concentri sul renderla meno fugace. Scrivere codice bello è non è un processo in un solo passaggio.
Non esiste una filosofia magica. I suoi 1000 passaggi più piccoli vengono eseguiti tutti insieme, ognuno dei quali ha uno scopo concreto che non ha nulla a che fare con quanto è bello il codice. Ma quando tu servili tutti insieme, formano un bellissimo codice come la somma delle sue parti. Come Voltron. O captain planet.
Risposta
Sono davvero daccordo con le risposte qui, ma adottando un approccio meno tecnico direi che il bel codice è unespressione dei suoi autori “chiarezza di pensiero del problema in questione che si manifesta attraverso un linguaggio ben formulato e preciso ma semplice.
Per me, guardare attraverso un codice meraviglioso è molto simile a guardare unopera darte, vedere dettagli sempre nuovi che mostrano il creatore intenzione, ma anche come sono state realizzate le diverse parti, ognuna dando una risposta a tante domande, e poi, finalmente, come la sua esistenza sembri una legge naturale a cui tutto si allinea in modo tale da poter essere descritta solo con parole di soggezione: magnifica , stimolante, bello.
Quindi, da quel punto di vista, nella tua carriera di programmatore potresti fare scoperte di codice stupendo che altri potrebbero non capire perché non hanno la conoscenza o potrebbero non trovare più degno di nota perché sono stati viziati da troppa bellezza;)
Un bel codice ha tutte le qualità pragmatiche come detto altrimenti, sono totalmente daccordo.
Risposta
Ho tre criteri:
- Semplice: Almeno deve essere leggibile dalluomo. Ad esempio, puoi scrivere un codice che funziona in O (1) per una soluzione con tonnellate di righe, ma preferisco il codice che funziona con 0 (n) risolve con poche righe. Questo potrebbe cambiare in situazioni estreme, ma allinizio la semplicità è importante.
- Riutilizzabile: Il codice deve essere riutilizzabile, ma non sovrascritto. Se hai bisogno di unoperazione, dovresti definirla nel modo in cui puoi utilizzarla anni dopo.
- Rientro: Forse questo non è un problema per te, ma per il livello principiante, questa è la prima cosa da risolvere.