Many years ago, I took part in the development of a taxi-hailing mobile app that is still widely used today. I don’t know what kind of code they’re running now, but in those early days, the driver assignment code –if I remember it correctly– was similar in spirit to the grossly simplified example th...
Decision tables are nice. They hide the important part of the logic away out of view of another programmer trying to figure out a bug in the code.
Very helpful! You take longer to find and fix bugs, and potentially miss a few extra ones because of stuff like this. Increased tech debt. Highly recommended! 👍
What's fun is determining which function in that list of functions actually is the one where the bug happens and where.
I don't know about other langauges, but it's quite inconvenient to debug one-linres since they are tougher to step through. Not hard, but certainly more bothersome.
I'm also not a huge fan of un-named functions so their functionality/conditions aren't clear from the naming, it's largely okay here since the conditional list is fairly simple and it uses only AND comparisons. They quickly become mentally troublesome when you have OR mixed in along with the changing booleans depending on which condition in the list you are looking at.
At the end of the day though, unit tests should make sure the right driver is returned for the right conditions. That way, you know it works, and the solution is resistant to refactor mishaps.
In case you’re wondering about the down votes, many think Clean Code is not a good book. It got a few good advice, but it also got bad advice disguised as good advice.
I don’t think switch statements should always be avoided. There are cases where polymorphism makes things more difficult to maintain. Saying polymorphism should be used over switch statements is not a good advice.
Here’s an article going into more detail why we should stop recommending Clean Code: https://qntm.org/clean