代码就是你的犯罪证据
写的 if 就是你的犯罪证据业务的复杂性,导致了架构的复杂性。在这些代码故事里,发生得最多的地方就是 if 语句。所以,你可以从大部分的 if 语句里,看到一些代码上的坏味道。 业务条件复杂
你先写了一个 if 语句里面只有一个条件,没问题。但是后来的人,又加了一个条件,因为业务上确实需要这么做。于是,后来,又不得加了一个if 语句,导致了这个条件变得更加复杂。 所以,完了,这些代码越来越难以维护。 于是,我们应对于这类条件判断,有两种做法:提取变量和提取方法。当你的判断条件是一个方法的时候,你可以想象一下它的架构是多么的复杂。 难以阅读的字符串判断
开始的人加了一个简单的条件判断,因为当时真的只有这么一种业务场景。你又不能过度设计,成一个 switch-case。但是,后来又多了好多个场景。 针对于有限的 if 语句来说,可以转为 switch case(在 IDEA 里只需要 alt + enter 就可以自动完成)。 随着时间的推移我们的条件越来越复杂,我们的 if 语句会越来越复杂。 多层嵌套 if 语句
随着 if 条件进一步扩大化,我们的条件语句就变成了一个多层嵌套的循环语句。每多一层嵌套代码复杂度就 * 2,它的阅读难度就越来越大。于是乎: 我们的 if 方法随之变得越来越长,于是尝试去抽成一个方法。但是,当你又遇到一个新的场景时,你又加了一个 if 语句。后来,又又加了一个 if 语句。你才发现说,『咦,不对,这些 If 语句违反了开闭原则』。 于是,你尝试把代码重构成多态以替换 if 语句。 你开心的话,还可以转为 Factory + Strategy。 你开心的话,你也可以将它转为 HashMap 。 但是,在你写下第一个 if 的时候,你并不知道它会变成什么样的。所以,不要提前去把它转为这么复杂的架构。 上帝 if 如果你的业务场景真的超级复杂,那么你可能会看到一个非常长的 if 代码。它可能有几十个条件,有几百行到几千行的规模。 那么,你可以尝试使用注册表模式+ 注解,通过反射的方式来重构你的 if 语句。 重构在你进一步修改代码之前,让我们来又双叕明确一下什么叫重构 重构(Refactoring)就是通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。 换句话来说,重构只是在改善现有的代码,使其更易于阅读,换句话来说就是:Clean Code。而当我们说整洁的代码(Clean Code),说的是易于理解、修改和测试的。易于理解和修改意味着:
|