Nomenclatura delle variabili standard

3

Ho scritto una funzione e intendo fornire una variabile di input in modo che, quando è vera, le informazioni dell'utente vengano stampate sulla console. Se la variabile è falsa, la funzione è 'silenziosa'. I dati della console non sono necessariamente a scopo di debug.

Nel scegliere un nome, ho trovato "verbose" e questo mi ha portato a chiedermi se esistesse una nomenclatura standard di variabili comuni che sarebbe più adatta per questa variabile, dato il contesto sopra?

    
posta gatorback 19.06.2018 - 18:16
fonte

3 risposte

8

Suggerirei che il nome del parametro sia abbastanza irrilevante in questo caso, non importa come lo chiami, SomeFunction(true) non mi dice nulla di quello che true fa. Evita di utilizzare i parametri booleani / flag . Utilizza invece enumerazioni o due metodi, con nomi diversi che descrivono la loro differenza.

    
risposta data 19.06.2018 - 19:25
fonte
7

Potresti anche passare la destinazione dell'output come parametro alla funzione.

Un programma può avere o meno un parametro di riga di comando verbose , ma posso sempre silenziarlo reindirizzando il suo output a /dev/null

    
risposta data 19.06.2018 - 19:46
fonte
4

Presunzione di Java e che sei determinato a farlo da solo, piuttosto che utilizzare un struttura di registrazione , preferirei vedere qualcosa del tipo:

outPort.println("Hello world");

... dove outPort imposta automaticamente un oggetto nullo a meno che tu non abbia passato qualcosa del tipo:

someFunction(System.out);

... per sovrascrivere il valore predefinito.

Ora certo, potresti solo riconfigura System.out o reindirizza l'output quando esegui il programma, ma è tutto o niente. Se hai 15 oggetti che parlano ma vuoi solo sentirli da uno di essi è bello se puoi dire a ciascuno di loro a cosa parlare.

È possibile inviare l'output a "/ dev / null" o "NUL:" se si conosce il sistema operativo. Ma se non vuoi preoccuparti, ecco una versione veloce e sporca di un oggetto nullo che bloccherà il rumore prima che sia necessario coinvolgere i nomi dei file magici.

java.io.PrintStream outPort = new java.io.PrintStream(
    new java.io.OutputStream() { @Override public void write(int b){} }
);

Questo oggetto nullo non fa nulla tranquillamente quando viene chiamato. È un buon valore predefinito se il silenzio è il comportamento tipico desiderato. Qui sto usando una classe anonima perché sono pigro. Puoi creare una classe più robusta e assegnargli un nome appropriato se lo desideri.

Questi trucchi funzionano nella maggior parte delle lingue se cambi i nomi giusti.

    
risposta data 19.06.2018 - 22:06
fonte

Leggi altre domande sui tag