Volevo verificare alcune best practice della programmazione Scala, poiché sono nuovo di Scala. Ho letto online su come Scala non usa in genere le eccezioni tranne che per circostanze "eccezionali" (che non includono il controllo dei parametri). Proprio ora nel mio progetto sto usando un sacco di require
, quindi mi sto chiedendo quale sarebbe il modo migliore per il controllo dei tipi.Scala Costruttore/Metodo Parametro Controllo
Per esempio, se ho una classe
class Foo(String bar){
require(StringUtils.isNotEmpty(bar), "bar can't be empty")
}
quali sono le mie alternative al controllo bar? Creo un oggetto companion come
Object Foo {
def apply(bar: String) = Try[Foo] {
bar match = {
case null => Failure("can't be null")
//rest of checks
case _ => Success[Foo]
}
}
Oppure dovrei usare Opzione invece?
Inoltre, per i metodi scala, come posso controllare il parametro del metodo? Se restituisco già un'opzione, restituisco un'opzione vuota solo se ottengo un parametro errato? Non significherebbe che devo verificare un'opzione vuota quando uso il ritorno del metodo e non farei un'eccezione per consentire un messaggio più specifico? (ad esempio, l'eccezione di runtime non può utilizzare valori null).
mi meraviglio anche di questo – iCodeLikeImDrunk
@eddiemundorapundo come funzionerebbe per i metodi? Per le classi che vorrei usare si applica giusto? – jstnchng
ugh scusa per aver cancellato il mio commento Non avevo visto Try/Success/Failure dall'ultima volta che ho usato Scala. Prova/Successo/Guasto sembra essere come l'opzione. Nel tuo esempio sembra che dovresti ottenereOrElse() insieme a Foo() per ottenere un oggetto Foo o potresti fare qualcosa con l'oggetto Foo direttamente usando Foo(). FlatMap (...) e ritorna ancora un'altra Prova (che potrebbe provenire dai tuoi metodi) quindi concatena più mappe/filtri/whatevers. – eddiemundorapundo