DEV Community

Yonatan Karp-Rudin
Yonatan Karp-Rudin

Posted on • Originally published at yonatankarp.com on

Kotlin Code Smell 6 - Boolean Variables

Using boolean variables as flags exposes accidental implementation and pollute the code with Ifs.

TL;DR: Avoid using boolean variables, as they lead to the use of if statements. Instead, create polymorphic states.

Problems

  • Lack of extensibility

  • Comparison issues in some languages

Solutions

  • If a boolean variable maps to a real-world entity, it is acceptable. Otherwise, model it as a state to promote extensibility. This approach aligns with the Open/Closed Principle.

Examples

  • Usage of flags

Exceptions

  • Real-world true/false rules

Sample Code

wrong

fun processBatch(
    useLogin: Boolean,
    deleteEntries: Boolean,
    beforeToday: Boolean
) {
    ...
}
Enter fullscreen mode Exit fullscreen mode

Right

fun processBatch(
    useLogin: LoginStrategy,
    deleteEntries: DeletePolicy,
    beforeToday: OffsetDateTime
) {
    ...
}
Enter fullscreen mode Exit fullscreen mode

Conclusion

Exercise caution when using booleans. Flags make code maintenance and extension challenging. Gain a better understanding of the domain and consider migrating to the state design pattern. Utilize polymorphism instead of if statements or when expressions (pattern matching).


Stay updated with my latest thoughts and ideas by registering for my newsletter. Connect with me on LinkedIn or Twitter. Let's stay connected and keep the conversation going!


More Info

Credits

Top comments (0)