Se separare i metodi o meno

1

Sono nuovo di e voglio imparare le migliori pratiche di codifica e capire perché un metodo è migliore di un altro, in termini di efficienza e in quanto la codifica diventa più complicata. Questo è solo un esempio, ma posso prendere i principi da qui per applicare altrove.

Ho bisogno di un'opzione per visualizzare stuff , e ho messo il metodo stuff separatamente dal metodo per chiedere se l'utente vuole visualizzare stuff , poiché stuff ha molte linee di codice .

Per la leggibilità ho fatto questo:

public static void displayStuff ()
{

    String input = getInput ("Display stuff? Y/N \n");

        if (input..equalsIgnoreCase ("Y"))

            {
                stuff ();
            }
        else if (input.equalsIgnoreCase ("N"))
            {
                //quit program  
            }
        else
            {
                //throw error   
                System.out.print("Error! Enter Y or N: \n");

            }
    }


private static String stuff ()
    {
        //to lots of things here

        return stuff ();
    }

O

public static void displayStuff ()
{

    String input = getInput ("Display stuff? Y/N \n");

        if (input..equalsIgnoreCase ("Y"))

            {
                //to lots of things here
                                    stuff;
            }
        else if (input.equalsIgnoreCase ("N"))
            {
                //quit program  
            }
        else
            {
                //throw error   
                System.out.print("Error! Enter Y or N: \n");

            }
    }

È meglio tenerli insieme e perché?

Inoltre, se il secondo metodo è privato o pubblico, se chiedo dati all'interno della classe?

Non sono sicuro se questo è in argomento per qui. per favore avvisare.

    
posta Yvette Colomb 26.10.2013 - 12:18
fonte

2 risposte

0

Ovviamente dipende da cosa "roba" in questo contesto, se è banale, allora il secondo modo probabilmente va bene. D'altra parte, se è qualcosa che dovrai chiamare ripetutamente e / o in circostanze diverse, o se vorrai chiamare altrove, allora è meglio estrapolarlo in un metodo.

Detto questo, è probabile che metterlo in un metodo sia migliore per la futura protezione del codice (ad es. cosa succede se "roba" cambia e diventa ingombrante, il che significa che si finisce per doverlo inserire comunque in un metodo) e per la leggibilità. La "roba" è autoesplicativa o sarebbe meglio racchiusa in un metodo che la nomina con uno scopo chiaro. Tieni a mente, anche se stai solo scrivendo / mantenendo il codice, potresti tornare tra due mesi e quindi potresti anche essere una persona diversa per tutto ciò che ricorderai di ciò che ha fatto il codice.

Re pubblica / privata, se la chiami solo da quella classe, allora dovrebbe essere privata. Di nuovo, dipende dall'architettura del programma, ma se si tratta di un funzionamento interno della classe, allora dovrebbe essere privato, se deve essere chiamato da altrove, quindi pubblico.

Ma mettilo in modo più sintetico: pensa attentamente prima di rendere pubblici i tuoi privati. ; -)

    
risposta data 26.10.2013 - 13:48
fonte
1

È una buona pratica quando il codice all'interno della funzione è lungo o complesso o utilizzato da diverse parti della tua logica. Ad esempio, quando si desidera convalidare il nome della persona composto da 4 parti, è possibile isolare la convalida del nome e non ripeterla 4 volte.

Lingue come COBOL prospera sul concetto di separazione logica e alcuni metodi di programmazione ruotano attorno alla programmazione strutturata e alla progettazione top-down.

In OO dovresti separare i metodi di classe in modo proprio. Tuttavia, la tua domanda, come posso vedere, riguarda il codice all'interno di un metodo.

È non così buono una pratica per isolare il codice all'interno di un metodo in un'altra funzione quando:

  • Devi restituire più di un risultato

  • Devi passare diversi parametri

  • Quando la funzione non ha effetti collaterali così ovvi

  • Potrebbe causare errori gravi che devono essere risolti da try-catch nel chiamante

Dico "non così buono" perché potrebbe causare confusione o difficoltà di lettura e, eventualmente, codice più lungo non necessario.

Quanto sopra sono solo linee guida da considerare prima di estrarre il codice e posizionarlo in una funzione separata.

    
risposta data 26.10.2013 - 13:08
fonte

Leggi altre domande sui tag