高效编程的11条规则( 二 )


所有设计都是重新设计 。向他人学习
6.最小化复杂度从本质上讲,软件开发是一项复杂的任务 。不要使其变得不必要的复杂 。有时通过在函数中引入一些额外的" if"或"循环"来实现一些业务规则非常诱人 。开发将更快,但是代码将变得更暗,添加新功能只会使其变得更加复杂 。如果出现问题,将更难找出原因 。
有一个伟大而又非常简单的度量标准,其秘密名称为" Cyclomatic Complexity" 。它是在70年代推出的,但仍然非常有用 。此度量标准衡量代码执行的多种方式 。每个条件语句和循环都将得分加+1 。分数越小越好 。当我们分析一种方法时,分数在范围内:
· 0-10:代码结构合理,不应引起意外问题
· 10–20:代码非常复杂,并且有很多潜在的执行路径可供测试 。重构候选人
· 20–50:代码非常复杂,应进行重构
· 50岁以上:必须进行重构
可读性比性能更重要 。该声明有一些限制,但从长远来看,可读性基本上是有回报的 。您可以使用更少的错误来更改代码 。微观优化可能很容易使您的代码变得一团糟,并且不会给用户带来太多价值 。
7.不要一个人做听起来可能违反直觉,但是编程是一种社交活动 。隐藏在地下室黑暗中的程序员时代已经结束 。分享专业知识和经验变得越来越重要 。在最坏的情况下,您要与之交谈的人将成为您的橡皮鸭,但很可能您会收到一些有价值的反馈 。有人可能会发现您根本没有考虑的解决方案中的问题 。从不同的角度看待是一个很好的工具,并且非常容易获得 。
任何人都不应对已部署的代码负责 。提供新功能是团队而非个人的工作 。代码审查,配对编程,拉取请求是一种工具,可以承担一个人的责任,并将其移交给具有最佳跨职能技能的一群人 。对于可能影响整个公司业绩的重要功能,开发人员的责任实在太大了 。这种情况非常不健康,绝不应该发生 。
8.测试是必须的尽早发现错误非常重要,可以节省大量的工作量和客户的愤怒电话 。尽早发现问题使他们更容易解决 。在开发特定应用程序时,我们能够最好地记住所有细节和逻辑 。我们记得做出特定决定的所有理由以及如何调试每个应用程序 。修复错误的成本会随着时间呈指数增长 。

高效编程的11条规则

文章插图
> Source: https://deepsource.io/blog/exponential-cost-of-fixing-bugs/
【高效编程的11条规则】 
9.学习英语共享知识一直是软件社区的基础之一 。大多数信息是用英语编写的,并且易于访问 。目前,它是软件世界中最流行的语言 。如果您不会用英语读写,您将会遇到很多困难,并失去很多机会 。而且,几乎每种语言的语法默认情况下都是用英语书写的 。
用英语写注释和名称也是一个好习惯 。它使代码更整洁,并且与语法更加一致 。如果我们要与他人(尤其是来自不同国家/地区的人)共享代码,那么基本上没有比英语更好的方法了 。
10.多任务使你变得愚蠢人们根本无法一次做好多件事情 。软件开发需要使用抽象概念,并且通常需要构建非常复杂的思维模型 。如果您分心或开始从事其他工作,那么您将失去一切,必须从头开始 。此外,有多项研究证明多任务处理对性能,生产率和智商有负面影响 。
高效编程的11条规则

文章插图
> Source: https://insights.sei.cmu.edu/devops/2015/03/addressing-the-detrimental-effects-of-context-
 
我曾经在软件公司参加过一次培训,介绍了一种非常有用的实践 。如果您没有任何预定的会议或电话,则可以自由播放"西红柿" 。规则非常简单-您无需与任何人交谈 。如果有人问您任何问题,您将用一个单词回答:"西红柿" 。因此,您表明自己正在工作之中,不想被打扰 。人们处于"西红柿模式"时,他们还会在日历中显示选定的时间 。完全"蕃茄"化并不总是一件好事,但这是一种改善性能的有趣方式 。
11.少做多好更少的代码和更好的维护基础架构 。有很多人喜欢在他们的应用程序,模块,服务器,节点,pod,微服务或任何其他东西中吹嘘大量的代码行 。应用程序中的每一行代码都有可能具有最高的质量,并且恰好位于正确的位置 。但这是非常罕见的情况 。如果您可以使用较少的资源来完成相同的工作,则应该这样做 。质量是目标,而不是数量 。


推荐阅读