Come valutare la qualità del codice Rails?

7

In una revisione del codice, che cosa cerchi per valutare l'esperienza di uno sviluppatore? Data l'opportunità di guardare il lavoro di uno sviluppatore su un progetto reale, quali segni rivelatori sono un suggerimento -Dalla mancanza di attenzione o mancanza di esperienza? Al contrario, dove guardi nel codice per trovare la prova dell'abilità di uno sviluppatore o della conoscenza delle migliori pratiche?

Ad esempio, se guardo una tipica app Rails, sarei felice di vedere che lo sviluppatore sta usando RSpec (dimostrando l'impegno a utilizzare lo sviluppo basato su test e la conoscenza che RSpec è attualmente più popolare rispetto al TestUnit predefinito ). Ma esaminando le specifiche per un modello Rails, vedo che lo sviluppatore sta testando le associazioni, il che potrebbe indicare una mancanza di reale comprensione dei requisiti di test di Rails (poiché tali test sono ridondanti dato che testano solo ciò che è già implementato e testato in ActiveRecord) .

Più in generale, potrei cercare di capire se gli sviluppatori stanno scrivendo le proprie implementazioni rispetto all'uso di gemme ampiamente disponibili o se stanno ripulendo il codice anziché lasciare molti "avanzi" commentati.

Che cosa ti aiuta a determinare l'abilità di uno sviluppatore di Rails? Qual è la tua lista di controllo della qualità del codice?

    
posta Fortuity 04.03.2011 - 19:47
fonte

5 risposte

3

In genere è facile determinare la qualità del codice e non ha nulla a che fare con Rails o Ruby.

  1. Tutte le funzioni devono essere comprese tra meno di 8 righe.
  2. Nessuna funzione dovrebbe avere più di due livelli di rientro.
  3. I nomi dovrebbero essere comunicativi ed espliciti.
    3a. Le variabili in corto raggio dovrebbero avere nomi brevi. 3b. Le variabili con scope lunghe dovrebbero avere nomi lunghi. 3c. Le funzioni con scope lunghe dovrebbero avere nomi brevi. 3d. Le funzioni in ambiti ristretti dovrebbero avere nomi lunghi.
  4. Il codice dovrebbe leggere come una prosa ben scritta e avere pochi commenti.
  5. Mentre leggi il codice non dovresti cercare le definizioni delle variabili e delle funzioni chiamate. Dovrebbero essere ovvi.
  6. Le chiamate di funzione dovrebbero avere 3 o meno argomenti, con una preferenza per meno.
  7. La copertura del test unitario dovrebbe essere vicina al 100% e il programmatore dovrebbe conoscere il numero di copertura.
  8. I test unitari dovrebbero essere brevi, facili da leggere e facili da capire. Dovresti essere in grado di capire il programma leggendo i test.
  9. I test dovrebbero essere eseguiti molto rapidamente. I test di lunga durata sono un sintomo di noncuranza.

Cerca i segni di incuria come il codice commentato, i commenti senza senso, i nomi abbreviati inutilmente, le funzioni lunghe, le lunghe liste di argomenti, ecc.

Chiediti se il codice assomiglia al programmatore.

Se vuoi qualcosa di specifico su Rails - guarda se ci sono regole di business negli oggetti attivi. Questo è un sintomo di un design disattento.

    
risposta data 06.04.2011 - 06:19
fonte
1

Ho convenuto che è importante non reinventare la ruota, ma non sarei troppo critico sui moduli che scelgono. La tua pignoleria su RSpec / Test :: Unit ti farà probabilmente perdere qualche buon codice. Allo stesso modo con un hpricot / nokogiri, ecc. Potresti percepirne uno che si allontana dall'altro, ma potrebbe non essere la percezione di uno sviluppatore di talento (o forse hanno implementato funzioni interessanti rispetto alla scrittura del modulo stantio).

Per quanto riguarda una lista di controllo di qualità, sbaglio dal lato della bellezza:

  • Il codice sembra abbellire sulla pagina? (Mi rendo conto che questo è soggettivo, ma a qualcuno che "ottiene" ritengo che sia la migliore misura di eccellenza.)
  • La semantica è coerente per tutto il progetto?
  • ActiveModel se appropriato
  • Le migrazioni sono sfruttate al massimo del loro potenziale?
  • Ambiti e relazioni nel contesto appropriato?
  • Utilizza gli attributi virtuali?
  • La creazione di oggetti complessi viene gestita in fabbrica?
  • Utilizza in modo efficace la meta-programmazione per rendere il progetto pulito e ordinato?
  • Le viste sono prive di logica?
  • Infine, un altro elemento soggettivo ma importante: il codice si sente come se lo sviluppatore amasse il progetto e volesse fornirlo con la massima cura possibile.
risposta data 05.03.2011 - 04:03
fonte
1

Tutto ciò che devi valutare è se il codice è facile da capire , ben strutturato e sufficientemente logico per qualcuno che ha ottenuto buoni voti nei corsi di scienze delle scuole superiori.

Tutto ciò che hai menzionato riguarda la conoscenza o l'esperienza, ed è quindi qualcosa che qualcuno che vuole scrivere buoni programmi imparerà prima di allora.

La mancanza di esperienza è qualcosa su quali accordi sulla compensazione possono essere fatti durante l'assunzione. Incuria, complessi geniali, mancanza di pensiero logico, ecc. Sono fuori dal campo di applicazione.

Per negazione: se il codice utilizza tutti gli idiomi e le librerie corretti, ma non è possibile eliminarlo facilmente, almeno chiedi al ragazzo perché il suo codice è così difficile da capire prima dell'assunzione.

    
risposta data 20.03.2011 - 02:07
fonte
0

Per qualsiasi codice open source, specialmente se è disponibile su Github, puoi clonare il repository ed eseguire metric_fu su di esso. Confronta i punteggi con un pezzo di codice che hai scritto che pensi sia buono.

In secondo luogo, cerca le solite pratiche:

  • Controller magro, modello grasso
    • Ancora meglio è se lo sviluppatore non aderisce rigorosamente a un controller su un'architettura di modello
    • Ancora meglio se lo sviluppatore scoppia parti della logica aziendale fuori dal modello
  • Buona copertura di test del modello e del controller
  • Buon approccio alla gestione delle chiamate Ajax
  • Buon approccio ai problemi che non sono CRUD
risposta data 04.03.2011 - 20:11
fonte
0

L'esecuzione di metric_fu ti aiuterà a segnalare eventuali bandiere rosse.

Metric_fu is a set of metric tools that make it easy to generate metrics reports. See the list of metrics the gem includes It's designed to integrate easily with CruiseControl.rb by placing files in the Custom Build Artifacts folder...

http://metric-fu.rubyforge.org/flog.gif

    
risposta data 27.03.2011 - 19:19
fonte

Leggi altre domande sui tag