专家说别用 if-else 编码方式,那代码怎么写( 二 )


如何处理新的条件功能?
如果新功能通常会使用一些条件检查来实现 , 现在你可以直接创建一个新的状态类 。
就这么简单 。 你将不再需要处理笨重的 if-else 语句 。
如何将状态对象持久化在数据库中?
不需要 。
当把一个对象保存到 SQL 或 NoSQL 数据库时 , 状态对象并不重要 。 只有知道对象的状态 , 以及如何将其映射到列才是重要的 。
你可以将状态映射到一个友好的类型名、一个枚举或一个整型 。 只要你有某种方法将保存的值转换回状态对象 , 那就任何方法都行 。
但为什么你还在使用 if?
是的 , if 有时是必不可少的 , 尤其是作为防护语句(guard clause)使用时 。 If-Else 组合才是让人头疼的可维护性的根本原因 。
但是你介绍的方法会带来很多额外的类!
的确如此 。 正如我在另一篇文章中提到的 , 复杂性并不源于你拥有的类的数量 , 而是源于这些类所承担的责任 。
拥有许多专门的类 , 会让你的代码库更易读、更易维护 , 而且整体上更容易让人喜欢 。
参考链接:
--------------------------
Examples by Refactoring Guru
https://refactoring.guru/design-patterns/state
Examples by SourceMaking
https://sourcemaking.com/design_patterns/state
How to make your code more Object-Oriented by Zoran Horvat
https://app.pluralsight.com/library/courses/c-sharp-code-more-object-oriented/table-of-contents
C# Design Patterns: State by Marc Gilbert
https://app.pluralsight.com/library/courses/c-sharp-design-patterns-state/table-of-contents
原文链接:
https://medium.com/swlh/stop-using-if-else-statements-f4d2323e6e4
本文由高可用架构翻译 , 技术原创及架构实践文章 , 欢迎通过公众号菜单「联系我们」进行投稿 。
高可用架构
改变互联网的构建方式


推荐阅读