Questo è molto difficile da spiegare perché semplice non significa la stessa cosa per tutti.
Esempio. Alcuni sviluppatori pensano che ?:
sia semplice, ma altri pensano che un'istruzione if
sia migliore. Quando sei giù a questo livello, non puoi accontentare tutti.
In generale, significa semplice senza complessità . Per comprendere la semplicità, dobbiamo comprendere la complessità.
Ci sono due tipi di complessità:
Essential complexity refers to a situation where all reasonable
solutions to a problem must be complicated (and possibly confusing)
because the "simple" solutions would not adequately solve the problem.
-- Wikipedia
Accidental complexity is complexity that arises in computer programs
or their development process (computer programming) which is
non-essential to the problem to be solved.
-- Wikipedia
Puoi verificare la complessità essenziale con le seguenti domande:
Questa soluzione è semplice? Posso spiegarlo al mio peer in un paio di minuti e lo ottengono? C'è una soluzione più semplice al problema? Se sì, ci sono dei compromessi tra la soluzione complicata e quella semplice? Possiamo vivere con quei trade-off? Ad esempio, molti programmatori commettono un errore di micro ottimizzazione di tutto e la loro soluzione (e anche il codice) diventa eccessivamente complicata.
Verifica la tua complessità accidentale:
Il codice è semplice? Se torno indietro in tre mesi, quanto tempo impiegherò per costruire il contesto nel mio cervello in modo da poter apportare il cambiamento che devo apportare? Tutto nel mio codice sorgente ha uno scopo chiaro e trasmette efficacemente questo scopo a me e agli altri sviluppatori ? Quanto è difficile testare il mio codice? Di solito, più il tuo codice è complicato, più difficile è il test dell'unità, quindi di solito uso questo come una misura della complessità. Di solito vuoi classi e metodi piccoli, ben definiti e focalizzati. Gli schemi di progettazione solitamente ti aiutano a raggiungere anche questi.
Se ti accorgi di voler utilizzare un modello di progettazione solo perché hai appena letto su di esso, probabilmente introdurrà una complessità accidentale. Se ti accorgi di voler inserire qualcosa perché pensi che sia "intelligente", probabilmente introdurrà una complessità accidentale.
Spero che questo aiuti e non dimentichi: Semplice non significa FACILE .