Penso che la denominazione delle funzioni sia molto importante qui.
Una funzione strongmente sezionata può essere molto auto-documentante. Se ogni processo logico all'interno di una funzione è suddiviso in una propria funzione, con una logica interna minima, il comportamento di ogni istruzione può essere risolto dai nomi delle funzioni e dei parametri che prendono.
Naturalmente, c'è un lato negativo: i nomi delle funzioni. Come i commenti, tali funzioni altamente specifiche possono spesso non essere sincronizzate con ciò che la funzione sta effettivamente facendo. Ma , allo stesso tempo, assegnandogli un nome di funzione appropriato, lo rendi più difficile per giustificare lo scorrimento dello scope. Diventa più difficile fare una sottofunzione fare qualcosa di più di quanto dovrebbe chiaramente.
Quindi suggerirei questo. Se ritieni che una sezione di codice possa essere scomposta, anche se nessun altro la chiama, poniti questa domanda: "Che nome daresti?"
Se rispondere a questa domanda richiede più di 5 secondi, o se il nome della funzione selezionato è decisamente opaco, c'è una buona probabilità che non si tratti di un'unità logica separata all'interno della funzione. O, per lo meno, che non sei abbastanza sicuro di ciò che l'unità logica sta davvero facendo per dividerlo correttamente.
Ma c'è un ulteriore problema che le funzioni pesantemente dissezionate possono incontrare: bug fixing.
Il rilevamento degli errori logici all'interno di una funzione di linea di 200 + è difficile. Ma monitorandoli attraverso più di 10 funzioni individuali, cercando di ricordare le relazioni tra loro? Questo può essere ancora più difficile.
Tuttavia, ancora una volta, l'auto-documentazione semantica attraverso i nomi può avere un ruolo chiave. Se ogni funzione ha un nome logico, tutto quello che devi fare per convalidare una delle funzioni foglia (oltre al test delle unità) è vedere se effettivamente fa quello che dice. Le funzioni fogliari tendono ad essere corte e focalizzate. Quindi, se ogni singola funzione foglia esegue ciò che dice che dovrebbe, l'unico problema possibile è che qualcuno gli ha passato le cose sbagliate.
Quindi in questo caso, può essere un vantaggio per correggere i bug.
Penso che sia davvero necessario decidere se è possibile assegnare un nome significativo a un'unità logica. Se è così, allora può probabilmente essere una funzione.