giovedì 8 ottobre 2015

Java - come usare un booleano

...e come ottimizzare un metodo

Bisogna cercare di utilizzare il minimo indispensabile di codice, questo non solo nei metodi grandi, ma deve essere un'attitudine mentale, che deve portare a pensare come risparmiare calcoli e uso di variabili sempre e comunque in modo da mantenere il nostro codice snello, leggibile ed il piu' efficiente possibile.

farlo male

primo errore: non ha senso usare un blocco if-else per restituire un booleano, in quanto la condizione if richiede un booleano essa stessa. Per cui se mi serve restituire true faccio prima a restituire l'espressione che userei nella condizione dell'if, altrimenti la sua negazione (!).

Secondo errore: due return. Non e' bellissimo inoltre complica la leggibilita' del codice. Sempre bene inizializzare un parametro e restituire quello alla fine - cosi il povero idiota che leggera' il tuo codice non si trovera' una miriade di return senza doversi calcolare quando passa da un return e quando passa da un altro.

terzo errore: sempre di leggibilita' se vuoi eseguire una certa istruzione solo se un certo dato non e' null, allora fai un blocco if-else su quella condizione, non un return sull not-condizione ed esegui l'istruzione fuori dal blocco if-else. E' molto piu' complicato da capire.

farlo bene

Uno: creo un parametro booleano, al quale assegno il valore dell'if else (il metodo deve restituire true se avviso non e' null - quindi il mio booleano sara' avviso != null - molto piu' chiaro no?)

Due: eseguo il metodo solo se il booleano e' true (ovvero se avviso non e' null) - anche qui e' chiarissimo cosa sto facendo e perche'.

Tre restituisco il valore del booleano che e' true se avviso non e' null false se lo e'. Non c'e' verso di confondersi. Il codice in questo modo e' piu' semplice e piu' leggibile.

Il codice non deve essere solo funzionante, deve essere funzionale (quindi non solo fare le cose, ma farle bene e con bene intendo usando il minimo di risorse possibili e rilasciandole quando non servono piu'), ma deve essere anche manutenibile, quindi chiunque venga dopo deve poter capire quello che sto facendo, e come lo sto facendo. Quindi il primo passo e' scrivere codice leggibile, ma anche evitare il piu' possibile le forme arzigogolate (un esempio e' null != qualcosa - e' la stessa cosa che scrivere qualcosa != null ma lo rendo meno leggibile) e aderire piu' possibile alle convenzioni (implicite ed esplicite) del linguaggio. Perche' chi legge si aspetta che le cose siano fatte in un certo modo e non come gira al programmatore di turno. Il secondo e' usare i commenti. Quando sto facendo qualcosa di complicato due righine di spiegazione non ti costano niente, e facilitano la manutenzione da parte di chi leggera' quel codice. Semplicemente gli eviti di andarsi a leggere un blocco di codice e cercare di capire. E soprattutto gli eviti di fraintendere. Se spieghi cosa stai facendo hai piu' possiblita' che chi venga dopo capisca se stai facendo un errore oppure sia una cosa voluta...

Alla prossima!

Nessun commento:

Posta un commento

I messaggi non appaiono subito ma a seguito dell'approvazione di un moderatore. Siete pregati di seguire le seguenti regole