当前位置: 首页 > 科技观察

高效编程的11条法则

时间:2023-03-20 01:40:10 科技观察

这绝不是一个详尽的清单,而是从事IT工作多年后的主观排名。希望你发现其中一些有用。1.童子军规则“始终保持营地比您发现时更干净”——这是一个很好的生活经验法则。当你靠近营地时,把它打扫干净,即使这不是你的错。这是Scout的规则之一。这同样适用于编程。正如RobertC.Martin所说:“让代码比发现的更好”。如果我们发现别人写的一些难以阅读的应用程序,并且花了一些时间来理解,我们至少让它变得更好一点。如果它不在我们正在处理的任务范围内,我们总是可以创建一个新的小技术任务,详细描述它并将其带入下一个冲刺。这条规则的精简版更像是在公共厕所唱歌。我们至少不应使它所处的条件恶化。我们必须记住,总有一天会有人接管我们开发的应用程序的一部分并尝试对其进行修改。让我们不要让生活更艰难。2.思考问题,而不仅仅是解决方案软件开发人员非常擅长实施解决方案。我们了解语言、模式、库、框架并了解如何使用它们。问题是我们经常做一些从商业角度看没有意义的事情。您正在开发的某些功能可能会复制企业所有者不知道的现有功能。有些可能没有经过深思熟虑,永远不会进入下一个版本,或者根本没有用户会使用它们。这是对时间、金钱和挫败感的巨大浪费。很多人不想征求开发人员的意见,只是假设他们的工作就是交付功能。没有谈判。仅限技术工作。开发人员每天都在使用该应用程序。他们知道每一个功能,即使没有人使用它。有时,从业务角度来看看似简单的任务需要花费数月的开发时间。一些看似不可能的工作需要几天时间。原因是要实现功能的人和提出功能的人之间缺乏沟通。两者之间存在巨大差异:为用户的购物车创建持久存储用户应该能够保存他们的购物车并在移动和Web应用程序上使用它第一个很简单。没什么好问的。第二个更难,因为它让你思考推理,你将成为为给定问题提出解决方案的人。会有很多关于细节、功能需求、质量属性等方面的问题。既然你现在不仅仅是一个执行者,那么解决方案就会得到更好的解决。3.考虑TCO有时很容易偷工减料并跳过以后的测试,留下一个临时解决方案并承诺以后会更正它。在大多数情况下,如果它不破裂,您就永远不会破裂。将有新的任务、优先事项、要实施的功能和要解决的问题。您将遇到的问题是此类应用程序可能会损坏。此外,将很难修复。功能的总拥有成本是从开发开始到部署、维护和终止所花费的金钱和精力的总和。如果我们在开发过程中走捷径,那将是成本最低的部分。你可能会发布得更快,但维护会很麻烦,用户会不高兴,而且通常一切都会比它应该的更贵。4.使用SOLID在编程中,有很多很棒的规则都是首字母缩写词:DRY、KISS、YAGNI、SOLID等。SOLID是一组可以帮助使代码更清晰并避免常见陷阱的规则。在将代码推送到存储库之前,这可能是一个很好的清单。该类是否支持“单一职责原则”?这个类可以被同一层次结构中的任何其他类替换吗(LSP是否满足)?这将有助于过滤掉未来问题的许多来源。理解并有意识地应用每条规则背后的原因将使您成为更好的程序员并提高代码审查的质量。5.使用设计模式在大多数情况下,您不是第一个尝试解决您面临的问题或实现具有类似要求的功能的人。已经有数以千计的CRM、CMS、银行系统、聊天室、在线商店、市场,基本上可以想到任何可能的应用程序类型。您正在开发的系统可能是市场上最好的,或者具有一些其他人所没有的极其先进和独特的功能。不过,大多数工作在某种程度上都是参考性的。其他人可能会尝试以多种不同的方式来做,甚至描述整个过程。它可以为您省去很多麻烦,并为您提供更好的解决方案。GangofFour有一本很棒的书,介绍了一些可用于解决常见问题的可重复模式。它写于1994年,但这些仍然有效且有用。在软件领域,那是过去的日子,但现在我们在编写代码时面临的问题并没有太大不同。从那时起,出现了许多新的设计模式。了解它们可以使您的工作轻松很多。所有设计都是重新设计。向他人学习6.最小化复杂性软件开发本质上是一项复杂的任务。不要让它不必要地复杂化。有时通过在函数中引入一些额外的“if”或“loop”来实现一些业务规则是非常诱人的。开发会更快,但代码会更黑,添加新功能只会让它变得更复杂。如果出现问题,将更难找出原因。有一个伟大且非常简单的度量标准,其秘密名称为“圈复杂度”。它在70年代推出,但仍然非常有用。该指标以多种方式衡量代码执行情况。每个条件语句和循环都会为分数增加+1。分数越小越好。当我们分析一个方法时,分数的范围是:0-10:代码结构良好,不应引起意外问题10-20:代码非常复杂,有许多潜在的执行路径需要测试。重构考生20-50:代码非常复杂,应该重构50+:重构是必须的可读性比性能更重要。该声明有一些局限性,但从长远来看,可读性基本上是值得的。您可以用更少的错误更改您的代码。微优化很容易将您的代码变成一团糟,并且不会为用户增加太多价值。7.不要一个人做这听起来可能违反直觉,但编程是一种社交活动。程序员躲在地下室黑暗中的日子结束了。分享专业知识和经验变得越来越重要。在最坏的情况下,与你交谈的人就是你的橡皮鸭,但你很有可能会得到一些有价值的反馈。有人可能会在您的解决方案中发现您甚至没有考虑过的问题。从不同的角度看问题是一个很好的工具,而且非常容易获得。没有人应该对已部署的代码负责。交付新功能是团队的工作,而不是个人。代码审查、结对编程、拉取请求是承担一个人的责任并将其移交给具有最佳跨职能技能的一组人的工具。开发人员对可能影响整个公司绩效的重要功能负有太多责任。这是非常不健康的,永远不应该发生。8.测试是必须的及早发现错误非常重要,可以节省大量工作和客户的愤怒电话。及早发现问题使它们更容易修复。在开发特定应用程序时,我们最好能够牢记所有细节和逻辑。我们记得做出某些决定的所有原因以及如何调试每个应用程序。随着时间的推移,修复错误的成本呈指数增长。9.学习英语分享知识一直是软件社区的基础之一。大多数信息都是用英语写的,很容易访问。目前,它是软件世界中最流行的语言。如果你不会用英语读写,你会遇到很多麻烦,也会错失很多机会。此外,几乎每种语言的语法默认情况下都是用英语编写的。用英文写笔记和名字也是一个好习惯。它使代码更清晰,语法更一致。如果我们要与其他人共享代码,尤其是来自不同国家的人,基本上没有比英语更好的方式了。10.一心多用会让你变笨人们一次只能做一件事。软件开发需要使用抽象概念,并且通常需要构建非常复杂的心智模型。如果你分心或开始做其他事情,你就会失去一切,必须重新开始。此外,多项研究证明,多任务处理会对绩效、生产力和智商产生负面影响。我曾经参加过一家软件公司的培训,该培训介绍了一种非常有用的做法。如果您没有任何预定的会议或电话,您可以免费玩“西红柿”。规则非常简单——您不必与任何人交谈。如果有人问你任何问题,你都会用一个词来回答:“西红柿”。所以你表明你在工作,不想被打扰。当人们处于“番茄模式”时,他们还会在日历中显示选定的时间。完全“番茄化”并不总是一件好事,但它是一种提高性能的有趣方式。11.用更少的代码和更好的维护基础架构做更多的事情。有很多人喜欢吹嘘他们的应用程序、模块、服务器、节点、pod、微服务或其他任何东西中的大量代码行。您应用程序中的每一行代码都具有最高质量并且恰好位于正确的位置。但这是非常罕见的情况。如果你可以用更少的资源做同样的工作,你就应该这样做。质量是目标,而不是数量。