(Attualmente sto usando groovy ma dovrebbe applicarsi alla maggior parte dei linguaggi OO quindi inserisco anche il tag langauge-agnostic)
Cerco di programmare in uno stile di funzione che include anche il concatenamento del metodo e l'evitamento delle variabili. Perciò spesso mi trovo a scrivere codice con il metodo with
in groovy che ogni oggetto ha. Funziona così:
someobject
.doSomething()
.doEvenMore() //this results in an object that I need check for some condition, e.g. a String
.with { String result ->
if (result != "I AM A CORRECT RESULT")
throw new Exception("assertion failed")
else
return result //need to do this because else the closure will return null
}
.doAnotherThingOnTheResult()
//and so on
(Vedi anche link per un vero esempio di vita che ho chiesto qualche tempo fa)
Questo è piuttosto inconciliabile, quindi stavo cercando un modo migliore per verificare le condizioni senza utilizzare with
. Mi è venuta un'idea che mi piacerebbe sentire le tue opinioni.
Cioè, un metodo che tutti gli oggetti hanno e che possono essere usati in questo modo:
someobject
.doSomething()
.doEvenMore() //this results in an object that I need check for some condition, e.g. a String
.assertTrue (new Exception("custom exception")) { it == "I AM A CORRECT RESULT" }
.doAnotherThingOnTheResult()
//and so on
o per comportamento predefinito con un tipo di eccezione predefinito
someobject
.doSomething()
.doEvenMore() //this results in an object that I need check for some condition, e.g. a String
.assertTrue { it == "I AM A CORRECT RESULT" } //results in AssertionException or sth similiar
.doAnotherThingOnTheResult()
//and so on
In groovy posso far sì che ogni (nuovo) oggetto creato sia decorato con un tale metodo. Che cosa ne pensate a riguardo? Ci sono modi migliori o dovrei rimanere con il metodo with
?