Secondo questa domanda e quasi tutte le guide di stile che io abbia mai letto, i metodi grandi sono cattivi. Tuttavia, supponiamo di avere un metodo che faccia quanto segue:
- Ricevi una stringa JSON da un servizio e la memorizza come dizionario
- Per vari parametri nel dizionario, crea connessioni ad altri servizi, come l'uso delle chiavi AWS per aprire le connessioni ai servizi AWS
- Scarica, autentica o manipola i dati in base ai valori nel Dizionario e ai nuovi dati ricevuti dal passaggio 2.
- Crea un file nella directory locale e scrive vari valori su di esso, in base ai passaggi 2 e 3.
- Spinge il file dal passaggio 4 in un'altra posizione
Chiaramente, questo non dovrebbe essere tutto un metodo di grandi dimensioni. Tuttavia, non sono sicuro di come suddividere questo metodo in metodi più piccoli senza superare una tonnellata di parametri. Ad esempio, il primo metodo è semplice perché ho solo bisogno di dire al programma una cosa, e viene restituita solo una cosa. Tuttavia, a partire dal passaggio 3, dovrò passare l'intero dizionario al nuovo metodo o rendere il dizionario un'istanza o una variabile globale.
Quindi, in breve, ecco la mia domanda. Quando si rompe un grande metodo come questo, qual è l'alternativa migliore: dovrei creare variabili che devono essere usate da più istanze / variabili globali dei metodi (a seconda di quale sia appropriato per questa particolare attività), o dovrei passare a creare nuovi metodi che prendono molti parametri?
Per me, sembra che la prima opzione sia molto peggio, perché sembra interrompere l'incapsulamento: ogni metodo creato in questo modo ora ha una strana dipendenza da una variabile globale o di istanza che è al di fuori del suo ambito. Tuttavia, il secondo metodo sembra davvero disordinato.