Il titolo della tua domanda è un po 'provocante, dal momento che dal testo è chiaro, cosa intendi per "Sono ammessi i cicli nel set di regole" Codice pulito ", tranne che per i componenti di basso livello ". Ecco come interpreto la tua domanda.
Penso che sia IMHO una domanda molto interessante, non così banale come potrebbe sembrare a prima vista. Non lo interpreterei solo alla luce di "Clean code" di Bob Martin, ma anche guardando "Clean Code" come pubblicizzato da persone come Ralf Westphal (riferimento tedesco: link , prova Google translate). Il suo suggerimento per ciò che chiama IODA architettura porta il principio "don" t mescolare basso e alto livello "all'estremo. E in effetti, in questa architettura, non troverai alcun ciclo "for" (e nessun'altra struttura di controllo come i condizionali) ai "componenti di livello superiore" - solo al livello più basso. Gli scopi dei componenti di livello superiore in questa architettura sono esclusivamente per "collegare" componenti di livello inferiore insieme.
Se prendi questo veramente all'estremo, devi modificare la struttura di ogni funzione come
function HighLevelfunction()
sum=0
for i = 1 to upperLimit logic
sum+=LowLevelFunction1(i)
return sum
in
function LowLevelfunction2( func funcAsParameter)
sum=0
' just for demonstration purposes, think not of reusage here
for i = 1 to upperLimit
sum+=funcAsParameter(i)
return sum
Nota nella prima versione HighLevelfunction
dipende da LowLevelFunction
, nel secondo LowLevelfunction2
non dipende più da nessuna altra funzione. Nella seconda, avrai bisogno di una funzione di "livello superiore" in cui la chiamata LowLevelfunction2(LowLevelFunction1)
abbia luogo - ma questo è semplicemente un passo di integrazione, non ci sarà nessun ciclo "for" al livello più alto necessario.
Tuttavia, facendo questo per ogni singola funzione in un programma del mondo reale, questo probabilmente diventerà presto molto poco pratico. Io (e credo che anche la maggior parte degli altri programmatori) disegnino la linea tra funzioni di alto livello e livello basso, classi o componenti su una granularità molto più grossolana. Bisogna trovare il giusto equilibrio e assicurarsi di non scrivere codice pulito solo per motivi di pulizia. Oppure, per dirlo con le parole di Ralf Westphal, "Do not Let Cleaning- Up Go Overboard ".