如果从if-else转向switch-case,再过渡到抽象逻辑,应该如何实现?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2726个文字,预计阅读时间需要11分钟。
在接触手稿遗留给后人的代码时,最让人感到不厌其烦的是什么?是复杂无比的UML图吗?我觉得并非如此。我的答案是,超过两个if语句的嵌套,或者超过两个case的switch结构。这可能在代码中造成大量冗余。
大家觉得在接手遗留代码时,见到什么东东是最让人感到不耐烦的?复杂无比的 UML ?我觉得不是。我的答案是,超过两个 else 的 if ,或者是超过两个 case 的 switch 。可是在代码中大量使用 if else 和 switch case 是很正常的事情吧?错!绝大多数分支超过两个的 if else 和 switch case 都不应该以硬编码( hard-coded )的形式出现。
复杂分支从何而来 首先我们要讨论的第一个问题是,为什么 遗留代码里面往往有那么多复杂分支。这些复杂分支在代码的首个版本中往往是不存在的,假设做设计的人还是有点经验的话,他应该预见将来可能需要进行扩展的 地方,并且预留抽象接口。但是代码经过若干个版本的迭代 以后,尤其是经过若干次需求细节的调整以后,复杂分支就会出现了。需求的细节调整,往往不会反映到 UML 上,而会直接反映到代码上。例如说,原本消息分为聊天消息和系统消息两类,设计的时候自然会把这设计为消息类的两个子类。
本文共计2726个文字,预计阅读时间需要11分钟。
在接触手稿遗留给后人的代码时,最让人感到不厌其烦的是什么?是复杂无比的UML图吗?我觉得并非如此。我的答案是,超过两个if语句的嵌套,或者超过两个case的switch结构。这可能在代码中造成大量冗余。
大家觉得在接手遗留代码时,见到什么东东是最让人感到不耐烦的?复杂无比的 UML ?我觉得不是。我的答案是,超过两个 else 的 if ,或者是超过两个 case 的 switch 。可是在代码中大量使用 if else 和 switch case 是很正常的事情吧?错!绝大多数分支超过两个的 if else 和 switch case 都不应该以硬编码( hard-coded )的形式出现。
复杂分支从何而来 首先我们要讨论的第一个问题是,为什么 遗留代码里面往往有那么多复杂分支。这些复杂分支在代码的首个版本中往往是不存在的,假设做设计的人还是有点经验的话,他应该预见将来可能需要进行扩展的 地方,并且预留抽象接口。但是代码经过若干个版本的迭代 以后,尤其是经过若干次需求细节的调整以后,复杂分支就会出现了。需求的细节调整,往往不会反映到 UML 上,而会直接反映到代码上。例如说,原本消息分为聊天消息和系统消息两类,设计的时候自然会把这设计为消息类的两个子类。

