你写的代码就是你的犯罪证据

我最近工作的主要内容是和其他人一起设计一个大型遗留系统项目。在

你写的代码就是你的犯罪证据

过程中,我发现了一件特别有趣的事情,我重新构建了许多if语句。从这些if语句中,业务的变化很可能被描绘出来。因此,我想写一篇文章来记录相关的经历。

你写的 if 就是你的犯罪证据

业务的复杂性导致架构的复杂性。在这些代码故事中,最常见的是if语句。因此,您可以从大多数if语句中看到一些不好的味道。

业务条件复杂

你首先写了一个只有一个条件的if语句,没问题。然而,后来人们增加了另一个条件,因为他们在商业中确实需要这样做。因此,后来不允许添加if语句,导致这种情况变得更加复杂。

所以,结束了,这些代码变得越来越难以维护。

因此,我们应该用两种方法来判断这样的条件:提取变量和提取方法。当你的判断条件是一种方法时,你可以想象它的结构有多复杂。发起“难以阅读的字符串判断”的人增加了一个简单的条件判断,因为实际上只有一个商业场景。你不能把它过度设计成开关盒。然而,后来有更多的场景。

多层嵌套 if 语句

对于有限if语句,它可以转换为开关大小写(在IDE中只需要输入alt键即可自动完成)。

随着时间的推移,我们的情况变得越来越复杂,我们的if语句也变得越来越复杂。

复杂的 if 块内逻辑

随着if条件进一步扩展,我们的条件语句变成了多级嵌套循环语句。嵌套代码的每一附加层的复杂性是* 2,这使得它越来越难以阅读。因此:

上帝 if

比如:

提供了一种反转if语句

或者比如三元表达式,但是我讨厌难以阅读的三元表达式——。然而,当它只有真和假的时候,它是相当好的。

if(!idspninfopath _ NV)的方法。条件){返回}。

WHY

当业务进一步复杂时,我们的if条件充满了各种逻辑。

上吊绳驱动开发

因此,您尝试将代码重构为多态性,以替换if语句。

如果你快乐,你也可以变成工厂战略。

如果你快乐,你也可以把它变成哈希表。

但是当你写下第一个if时,你不知道它会变成什么。因此,不要提前把它变成如此复杂的结构。

代码所有权

如果您的业务场景非常复杂,您可能会看到很长的中频代码。它可能有几十种情况,从数百行到数千行不等。

惧怕修改

在您进一步修改代码之前,让我们弄清楚什么是重构。重构是通过调整程序代码来提高软件的质量和性能,使程序的设计模式和架构更加合理,提高软件的可扩展性和可维护性。

换句话说,重构只是改进现有代码,使其更容易阅读,换句话说:干净代码。当我们说干净代码时,我们的意思是易于理解、修改和测试。易于理解和修改意味着:

重构

容易理解的前提是让每个团队成员都能快速理解。(附言:当然,如果一个人没有足够的智商或经验,他/她需要加强他/她在这个领域的能力)。这意味着,对于这个目的,你不能写太抽象和简洁的逻辑。你不能写得太挑剔,充满无用的字符。

如果你想让你的代码容易测试,首先让你的代码可以测试。然而,在进行测试之前,我们很难大规模地重建代码。因此,我们陷入了一个死循环。没有测试,我们无法测试和重建。

能力不够

等等,那么我们为什么需要重构呢?为了快速发布软件。

当软件是产品而不是项目时,我们需要不断发布新功能来满足客户需求。然而,为了快速发布应用程序,我们需要尽量减少每次的更改和测试,以实现快速发布。基于这样一个目标,我们会发现我们的许多实践都是基于此。例如,我们采用插件、微服务和组件方法来减少软件变更,从而减少相应部分的测试工作。从某种意义上说,我们加快了软件发布的过程,从而更好地实现了业务价值。因此,我们的第一步是最小化二进制变化。为了最小化二元变化,我们必须实现高内聚力和低耦合。

因此,在编程或设计架构时,我们应该尽力满足solve的五个原则:

既然我们都知道如何重构以及如何使用设计模式来解决问题。那么,我们能改进我们的代码吗?不,因为在装配线生产中,每个人都能找到合理的理由。

我们的日常开发模式是:红绿重构。然而,由于时间关系,我们错过了重建的步骤。

在截止日期的驱使下,我写了这篇文章。虽然这篇文章的提纲是事先写好的,但许多单词打错了。

对于真正的业务开发,您需要提前设计相关功能的结构,这意味着您必须有足够的时间。这样,你就不会犯大错误。然而,你真的有这么多时间去设计吗?你今天轮班怎么样?

更改了您的代码,我将负责。因此,我不会修改其他人的代码。

没有测试,很难理解代码背后的业务原因。外部组织文化,导致沟通障碍;或者也许每个人都很忙,没有人愿意解释/回顾这段代码。

是的,大多数问题都是人的本性。

因为您只需要按IDEA的快捷键就可以完成上述大部分重构工作。当然,这需要熟练的按压,而不是像猴子一样弹钢琴。

开心点。

 

极牛网精选文章《你写的代码就是你的犯罪证据》文中所述为作者独立观点,不代表极牛网立场。如若转载请注明出处:https://geeknb.com/1809.html

(36)
打赏 微信公众号 微信公众号 微信小程序 微信小程序
主编的头像主编认证作者
上一篇 2019年11月26日 上午9:42
下一篇 2019年11月26日 上午9:47

相关推荐

发表回复

登录后才能评论
扫码关注
扫码关注
分享本页
返回顶部