2014-07-16 5 views
9

Ho un sacco di metodi null (metodi con 0 parametri) nel mio file di prova scala. Quindi, invece di scrivere come:Che cosa significa il seguente avvertimento: "i metodi nullati con effetto collaterale sono scoraggiati"?

def fooBar() = // 

io li scrivo come:

def fooBar = // 

ricevo il seguente avviso quando lo faccio:

Warning:(22, 7) side-effecting nullary methods are discouraged: suggest defining as `def fooBar()` instead 

Qual è il significato del avvertimento? Sto usando intelliJ come IDE e non ho potuto trovare molto su questo avviso sul web.

EDIT

E, ho dimenticato di dire, quando uso le staffe, non viene visualizzato il messaggio di avviso.

+0

Versione di scala? Tipo di ritorno effettivo di 'foobar'? – vptheron

+0

scala versione è 2.10.2. Il tipo di reso è Unità (sono funzioni di test) –

risposta

8

Il comune convenzione metodi nullaria vale a:

  • nel caso in cui un metodo laterale effettuando, significa che con l'uso di parentesi
  • altrimenti, goccia parentesi in caso è puro accessor simile metodo senza effetti collaterali

Si sta infrangendo questa regola e IDE ti avvisa di questo.

Vedi anche https://stackoverflow.com/a/7606214/298389

2

Fa fooBar avere effetti collaterali?

E 'semplicemente indicando una buona pratica per definire un metodo side-effettuando in quanto tale:

def fooBar() = ... 

e metodi non-side-effettuando in questo modo:

def fooBar = ... 

Dal momento che la chiamata al metodo simile per accedere a val, è bene distinguere quando il metodo sta facendo di più che restituire un valore.