May be my design is flawed (most probably it is) but I have been thinking about the way Option
is used in Scala
and I am not so very happy about it. Let's say I have 3 methods calling one another like this:
def A(): reads a file and returns something
def B(): returns something
def C(): Side effect (writes into DB)
and C()
calls B()
and in turn B()
calls A()
Now, as A() is dependent on I/O
ops, I had to handle the exceptions and return and Option
otherwise it won't compile (if A()
does not return anything). As B()
receives an Option
from A()
and it has to return something, it is bound to return another Option
to C()
. So, you can possibly imagine that my code is flooded with match/case Some/case None
(don't have the liberty to use getOrElse()
always). And, if C()
is dependent on some other methods which also return Option
, you would be scared to look at the definition of C()
.
So, am I missing something? Or how flawed is my design? How can I improve it?