良好编程的7项强大原则

  好的程序设计就是要运用一种方法来管理变更。

  如果有人问我,什么是好的编程,我将单线答复。

  良好的编程是将一头大象,一头狮子和一头笑的公驴关在一个房间而又不影响和平的艺术。

  让我解释。

  想象我是一个安静房间的所有者。 在这个房间里,我有一头狮子和一头笑着的公驴。 狮子在睡觉,公驴很安静。 恰逢此刻,两件事同时发生。 狮子醒来,大象进入房间。 看到这一点,公驴开始大笑,扰乱了房间的安宁。 现在的问题是,是什么使公驴笑了? 是狮子还是大象?

  关键是,作为房间的所有者,您首先需要确切地知道引起房间干扰的原因(是狮子,大象,公驴还是所有的组合?),以便您找出原因。 并控制损失。

  编程,尤其是好的编程,以相同的方式工作。 当您编码时。 你需要问问自己; 大象能不醒狮就进来吗? 狮子能否在不打扰公驴的情况下醒来? 如果大象离开房间怎么办? 等等…

  关键是管理变更并确定变更的原因。 好的程序设计就是要使用一种确定变更原因并隔离变更的方法。

  完成此操作后,无论在任何时间点添加任何新功能,您都将完全控制代码。 除了从经验中学习良好的编程外,您还需要练习一些编程原则,这些原则可以帮助您成为编写健壮,可维护代码的更好的程序员。

  以下是一些编程原则,这些原则在我的整个编程生涯中都为我提供了帮助。

  使所有内容均受版本控制

  您需要将构建,部署,测试和发布的所有内容保存在某种形式的版本存储中。

  这包括需求文档,测试脚本,测试用例,库,工具链等。 所有这些内容都应受版本控制,并且应针对任何给定的版本进行标识。 不要将其留给人类记忆。 众所周知,记忆是坏的,即使是对人类最好的。

  版本控制的工件不仅可以为您提供更好的控制,而且还为您提供了一个很好的备份选项,以防万一出问题了。 它还为加入团队的任何新人提供了自助学习指南。

  永远不要让您的代码更糟

  这是程序员的希波克拉底誓言。 作为程序员,我们经常被建议不要偷工减料,采取捷径会使代码恶化并使其恶化。

  在解决问题的过程中,有时弊大于利。 史蒂夫·麦康奈尔(Steve McConnell)在他的软件工程经典著作《代码大全》中说,如果您不解决问题的根本原因,而不仅仅是症状,那么弊端就是弊大于利,这是在欺骗您自己认为问题已经解决。 走了。

  但是,有时候这很困难。 遗留代码可能很难在不损害代码的情况下正确添加功能。 因此,如果您在不破坏代码的情况下仍想出如何进行更改,请在继续进行更改之前通知其他团队成员。

  这当然不会防止不良代码,但是这样做是为了给您更多的时间进行思考和反思。 经验表明,一个人会停下一个好的解决方案,因为他或她愿意做想到的第一件事。 您甚至可以与他人集思广益,以找到正确的解决方案。

  另一个优点是,它可以防止在错误的时间出现令人不快的意外情况,并使团队中的每个人都"意识到"可以预见的问题。 然后,团队将真正地以团队的方式进行排序。

  一次又一次地重复

  本质上,软件开发是一个启发式过程,所有启发式过程在修订和改进的迭代周期中均能很好地工作。

  迭代开发有很多优点。

  ·大多数用户喜欢今天看到好的软件,而不是一年后再等待非凡的软件。 通过将软件提供给用户,您不仅可以获得他们的早期反馈,而且还可以了解市场动荡的情况以证明其进一步开发的合理性。

  ·较短的迭代和较小的增量可帮助开发人员保持专注。 人性化的精神赢得了即时的满足感,并缩短了开发生命周期,带来了切实的成果,使团队保持了积极性。

  ·增量版本通常是建立在现有功能之上并添加可增加产品价值的新功能的最简单方法之一。

  开发的任何软件都倾向于先得到验证,然后再得到证明,这意味着我们反复进行开发和测试,直到正确回答所有预期问题为止。

  经常整合

  杰夫·汉布尔(Jeff Humble)正确地说。

  "如果有疼痛感,请更频繁地进行治疗,并进一步缓解疼痛。"

  集成通常是软件开发中一个非常痛苦的过程,大多数程序员将其推迟到最后。 我们经常听到开发人员的借口,例如"这是设置它的一种努力。 我现在没有时间。" 或"它可以在我的机器上工作,所以应该没问题",依此类推……。

  这是灾难的必经之路。 如果让您的系统变得不集成,那么从长远来看,您将面临不稳定,无法维护的系统的风险,并且风险会随着时间不断累积。 相反,可以更轻松地尽早解决风险和问题,以便您可以隔离问题并进行纠正。 推迟集成的时间越长,痛苦就越大。

  通过早期集成,您可以了解系统的各个组件如何协同工作,还可以实时查看共享和交流的信息。 而且,当您开始将集成作为常规编码任务的一部分时,遵循这种习惯就成了一个好习惯。

  尽早开始集成并定期进行以获取最佳结果。

  使用最好的工具进行编程

  如果我用两个词来定义程序员的工作,那就是"解决问题"。 优秀的程序员不会编写出色的代码。 他需要使用可用的最佳工具来解决业务问题。

  您可能会在这里争论;" 嘿,我是Java方面的佼佼者,我知道如何使用Java解决所有问题。 如果您这样想,那么您就患有"锤子钉子"综合症。

  该综合症指出,如果您有锤子,那么每个问题对您来说就像钉子。 在这种情况下,您只有一把锤子(即Java),您的思维最终将适应于仅使用Java解决问题的最佳方法。 这是一种奇特的说法,如果Java无法解决您的问题,您可能会陷入解决问题的困境。

  不要将您的编程思想局限于您所知道的语言所支持的概念。 最好的程序员考虑需要做什么,然后评估如何使用可用的最佳编程工具来最佳地实现目标。

  征服复杂性

  每当任何软件开发项目失败时,我们都有现成的理由。

  ·要求不佳(客户不知道自己想要什么!!!)

  ·计划不力(我们的项目经理搞砸了!!!)

  ·管理不善(希望首席执行官能展示更多球!!!)

  原因还在继续……。

  但是在整个过程中,我们忽略了导致失败的最重要的事情; 管理复杂性。

  该软件变得如此复杂,以至于没有人知道它在做什么。 当任何一个项目到达某个人无法完全理解一个区域中代码更改的影响将如何影响其他任何区域的程度时,我们可以放心,该项目注定要失败。 该项目迟早会暂停。

  尽管复杂性可能是由多种原因引起的,但所有邪恶的根本原因却是不良的设计。

  正如艾琳·欧(Arene Au)正确说的。

  "好的设计就像一台冰箱,当它工作时,没有人注意到,但是当它不工作时,肯定会发臭。"

  这实质上意味着您应该进行正确的设计。 过度设计带来了可能增加或可能不需要代码的复杂性。 设计不足实际上是对"代码质量差"的委婉说法。 我们认为设计不足是由于存在高耦合或弱内聚而发生的。

  永远记住,您的代码应该在任何时间都可以更改,并且无论是在设计时还是在设计时,这都是不可能的。 所以避免两者。

  最后,首先为人编写程序,然后为计算机编写程序

  使代码"易于阅读"不是软件开发过程的可选部分。 您需要养成编写良好代码的习惯,该行为只需编写一次即可,而不是浪费时间阅读和修改必须反复执行的错误代码。

  如果您的代码编写风格只能让您以后才能理解,则需要注意分析复杂代码编写风格,并找到一种以简单和结构化的方式开始编写高质量代码的方法。 这将极大地帮助您和您的组织。

  记住,编写错误代码的想法仅仅是因为您认为,您是唯一阅读代码的人,树立了错误的先例,并且使您陷入了令人讨厌的不良习惯中。 习惯(无论好坏)都定义了您作为程序员的能力。 因此,请确保您做的好事成为一种值得骄傲的习惯。

  专业的程序员编写简单,可读且可靠的代码。 

  正如Edsger W. Dijkstra正确说的那样。

  "简单性是可靠性的前提。"

posted @   linjingyg  阅读(74)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
点击右上角即可分享
微信分享提示