知名作家儒勒·凡尔纳说过一个道理:极简主义适用于一切。当今世界,极简主义被广泛应用于各种事物,代码也不例外。然而,令人沮丧的事实是当前的代码过于冗长。更准确地说,有太多不必要的代码阻碍了有效代码的产生。也就是说,不必要的代码本质上是有害的:它会腐烂,需要定期维护,并且需要查找错误。新功能意味着更新旧代码。代码越多,漏洞就越多。验证或编译的时间越长,新员工理解构建系统的时间就越长。除此之外,代码是由工程师编写的。编写的代码越多,需要的工程师就越多,沟通成本就越高,进一步推动代码维护和开发成本的不断增加。解决上述所有问题的一种方法是减少代码量。减少代码量有很多好处:更少的代码开发=更低的开发成本更少的代码开发=更低的维护成本更少的代码开发=更少的代码错误更少的代码开发=更有效的检测人们阅读代码的概率。下面是一些减少代码量的方法。Youdon'tneedit你不需要它(YouAren'tGonnaNeedIt,通常缩写为YAGNI)是一个极端的编程原则,意思是:“当你真的想用它的时候编码,永远不要编码,因为你估计以后会用到。”Thencode.”即使你百分百确定某个特性以后会用到,现在也不要写代码。YAGNI原则的实现主要基于两个原因:第一,避免编写不必要的代码可以节省时间。第二,猜测或多或少会出错,并且由于猜测而提前编写的代码将始终存在并损害代码的整体性能。避免不必要的代码可以使最终代码的性能更好。YAGNI原则是健全的适用于所有项目管理。好的代码设计是深思熟虑和功能平衡的。糟糕的代码设计充斥着各种糟糕的设计,变得功能失调,成为“维护噩梦”。这给我们带来的经验法则是专注于明确需要的东西,不要被可能需要的东西分心。不要编写防弹代码防弹代码是完美的代码,无论输入或意外情况如何。这是一个非常有吸引力的想法,尤其是对于adv在某些情况下不能容忍代码失败的高级开发人员。即便如此,编写或尝试编写防弹代码不仅不切实际,而且没有必要,因为世界上的一切事物,包括软件,都有其局限性。试图编写一个完美的模块需要编写额外的条件,这会使代码变得非常复杂并且达不到编写代码的目的。到那时,这些模块将变得更笨重、更昂贵,并且可能更难维护。这也解释了为什么编写更少代码的经验法则是编写最简单的有效代码。极限编程阐明了编写简单代码的两条黄金原则:首先,以您认为可行的最简单方式进行。不要盖太多令人眼花缭乱的上层建筑,不要搞花哨的噱头,干活就好。新功能代码的单元检测(所有功能都需要)。其次,也是极其重要的一点,重构系统以尽可能使用最简单的代码,同时保留所有现有功能。遵循“一次且仅一次”原则和其他代码质量原则,使系统尽可能简单明了。永远记住,我们需要的不是最快的方法,而是最简单的结果。因此,首先将已有的方法分解成多个部分,让已有的测试用例继续运行。第二,简单修改一小部分方法来处理下一个测试用例。如此循环。请记住,简约是优雅的极致。好的编程的本质是控制和消除复杂性。Nevermakecodeworse这可以说是开发者的“希波克拉底誓言”。通常建议开发人员不要走捷径,这将导致代码质量下降甚至更糟。与医疗程序一样,软件工程程序可能具有侵入性和破坏性,使用可能是新的且未经测试(或随意测试)的工具和技术。然而,不同之处在于,软件工程实践和所使用的工具不受医疗资格委员会或食品药品管理局(FGA)等组织的监管。因此,软件工程开发人员有时会在没有完全了解风险的情况下对“患者”(即软件)采取不必要的冒险行动。在解决问题的过程中,我们所做的有时并没有得到回报。SteveMcConnell在他的经典软件工程书籍《代码大全(Code Complete)》中提到,如果不解决问题的根源,而仅仅局限于问题的表面,往往弊大于利。开发人员会自欺欺人,让自己相信问题已经解决。向上。然而,有时这很困难。遗留代码增加了在不损害代码的情况下添加适量功能的难度。其实,把“永远不要让代码变得更糟”改为“故意降低代码质量”更符合这个道理。是的。如果您不知道如何在保持相同质量的同时更改代码,请在进行更改之前告诉团队的其他成员。关键是,您是在故意降低代码的质量。当然,这并不能避免错误代码,但它给了您一些思考的时间。经验告诉我们,当人们想不出好的解决方案时,他们就会停止思考,首先想到什么就去做。请注意,我们并不是在请求许可或更好的结果。“有意降低代码质量”的另一个好处是,它可以防止在错误的时间出现令人不快的意外情况,并让团队成员意识到可能存在的问题。这样,团队就可以很好地合作来处理这些问题。避免不必要的并发并发是一把双刃剑,只应在必要时使用。如果按顺序执行源代码,代码将更易于理解和调试。但如果使用并发,代码执行可能会出现并行或不规则的情况。这种实现上的差异使得代码调试非常困难。更不用说,它以多种方式使程序设计和执行变得复杂。并发实施不当可能导致的问题包括:竞争条件:发生意外操作。死锁(deadlocks):表被锁住,需要等待同步操作推进。资源匮乏:操作被永久拒绝访问所需的资源。世界上最臭名昭著的软件灾难之一是由滥用并发版本引起的。Therac-25放射治疗机的编程问题已导致四人死亡。尽管如此,现代编程语言和架构提供了多种多样的并发工具。但最终决定权在开发者手中。开发人员决定如何、何时以及在何处使用并发来实现最佳结果。最后,Don'tHoardCodesCompulsivehoarding或hoardingdisorder,特指一种行为模式,即过度获取和无法或不愿处置大量物品,最终导致灾难或因占用大面积生活区而造成破坏。如果开发人员有囤积症,他们会坚持使用有缺陷甚至过时的代码。这样的开发者从不删除任何代码,拒绝调动代码。当你质疑他们时,他们的回答是“我们有一天可能会使用这段代码”或“我需要这段代码来执行活动X”或类似的东西。你是代码囤积者吗?你是否以没时间为由拒绝清理一堆乱七八糟的代码?如果你的回答是肯定的,那么你就是一个代码囤积者,你的工作一团糟。囤积是一种非理性行为。如果您不确定代码的存在是否有意义,请对其进行适当标记,以便您注意到它并稍后重新访问它。最后,定期清理无用的、不需要的代码。一个优秀的程序员每天都会让他的代码变得越来越好。他们的代码质量会随着时间的推移而提高。优秀的程序员总是留下比旧代码更干净的遗留代码,而不是一团糟。他们的声誉永久嵌入代码中。正如罗伯特马丁所说:真理只存在于代码中。
