Evitando variabili / funzioni riferite solo una volta

3

Ho sentito alcuni sviluppatori dire che se a una variabile viene fatto riferimento solo in un posto, basta sostituire il riferimento ad esso con il valore assegnato ad esso. Ho anche sentito gli sviluppatori dire che se una funzione viene chiamata una sola volta, basta mettere le sue affermazioni al posto della singola chiamata.

Il ragionamento tipicamente dato è che quando leggi il codice non devi "saltare tutto" solo per scoprire cosa sta facendo il codice.

Quali modelli o pratiche sarebbero tali da rispettare o violare? Quali vantaggi ci sono in linea o per evitarlo?

Cose che ti vengono in mente:

  • simile al Principio di Responsabilità Unica, scrivendo funzioni che non provano a fare "troppe cose" (quindi, più facile da scrivere, testare, leggere / mantenere)
  • ottimizzare per il lettore del codice, non lo scrittore
  • aggiunto un sovraccarico delle chiamate di funzione e dell'allocazione di memoria (forse pertinente solo nelle lingue più vecchie?)

Penso che questo sia distinto da alcune altre domande nel quartiere che non sembrano chiedere / rispondere alla stessa domanda.

posta jinglesthula 16.05.2018 - 22:02
fonte

2 risposte

9

Hai solo bisogno di un motivo per creare una variabile o una funzione: per migliorare la chiarezza.

Le variabili nella parte superiore di una classe o modulo forniscono un singolo punto di riferimento e danno qualcosa a un nome significativo.

Lo scopo primario di creare un metodo non è quello di consolidare il codice ripetitivo; è per incapsulare la funzionalità e dargli un nome significativo. I metodi sono il grande conquistatore della complessità; una volta scritto e testato un metodo, non devi più ragionare su cosa c'è dentro.

Non devi "saltare" in alcun senso significativo; gli IDE più moderni ti diranno a cosa si riferisce la variabile o il metodo se passi il mouse sopra di esso.

Il principio di responsabilità singola è un concetto che si applica ai metodi classi, non. L'overhead è irrilevante, nella maggior parte dei casi.

    
risposta data 16.05.2018 - 22:09
fonte
3

Posso solo pensare in due volte quando è necessario verificare cosa fa un metodo:

  • Il nome del metodo non è auto-esplicativo. Devi dare nomi significativi ai tuoi metodi, variabili, classi ... Non sarebbe di aiuto al lettore se rifatti qualche riga in un metodo chiamato a () : incapsula l'implementazione, ma non ho idea di cosa faccia quel metodo. Il problema è la denominazione, non avendo molti metodi.

  • Devi correggere qualcosa all'interno della logica . Dovendo aggiustare qualcosa, preferisco che sia in un piccolo contesto con pochissimi effetti collaterali possibili rispetto a un metodo lungo con un sacco di logica in corso e diffuso. Inoltre, un buon nome del metodo mi aiuterà a sapere dov'è il bug o il cambiamento nella logica di business.

Oltre a ciò, le dichiarazioni / istanze variabili dovrebbero essere il più vicino possibile al luogo in cui vengono utilizzate. In questo modo, posso dedurre perché sono necessari. Ma posso capire che potrebbe dipendere dalla lingua e dal contesto.

    
risposta data 16.05.2018 - 22:35
fonte

Leggi altre domande sui tag