--- title: The Programmers Oath localeTitle: 程序员誓言 --- ## 程序员誓言 程序员誓言是由Robert C. Martin创建的誓言,突出了更好的网络指南。誓言如下: > 为了捍卫和维护计算机程序员的职业荣誉, 我保证,尽我所能和判断力: > > 1. 我不会产生有害的代码。 > 2. 我制作的代码永远是我最好的作品。我不会故意允许在行为或结构上有缺陷的代码累积。 > 3. 每次发布时,我都会生成一个快速,可靠,可重复的证据,证明代码的每个元素都应该正常工作。 > 4. 我会经常发布小版本,这样我就不会妨碍其他人的进步。 > 5. 我会抓住每一个机会无畏地,不懈地改进我的创作。我永远不会贬低他们。 > 6. 我将尽我所能尽可能保持自己和他人的生产力。我不会做任何降低生产力的事情。 > 7. 我将继续确保其他人可以为我提供保险,并且我可以为他们提供保险。 > 8. 我将在幅度和精度上产生诚实的估计。我不会毫无疑问地作出承诺。 > 9. 我永远不会停止学习和提高我的技艺。 [freeCodeCamp频道上的网络系列](https://www.youtube.com/watch?v=36NgPu9OyRM)分解了誓言的含义,以及如何遵循誓言。 ### 承诺1 > 1. 我不会产生有害的代码。 #### 什么是有害代码? 有害代码是对客户,程序员或系统结构有害的代码。 伤害有许多不同的形式。作为一名专业程序员, **您**承诺不会产生有害的代码,无论您的判断中的伤害是什么,也不会产生同行的判断。 ### 承诺2 > 2. 我制作的代码永远是我最好的作品。我不会故意允许在行为或结构上有缺陷的代码累积。 作为一名程序员,你想要相信做到最好的工作,而你永远不希望遇到你发布的代码明知不是你最好的工作。 您不希望允许有缺陷的代码在系统中累积。您可能无法阻止它进入您的系统(例如发布紧急情况),但您不会允许它通勤累积。 请注意,在承诺中,誓言中有“行为”和“结构”两个方面。行为有缺陷的东西**显然是个问题,**但是结构缺陷的代码会降低团队成员的工作效率,直到你几乎无法完成任何工作。 ### 承诺3 > 3. 每次发布时,我都会生成一个快速,可靠,可重复的证据,证明代码的每个元素都应该正常工作。 客户,用户甚至是商务人员都希望我们能够不定期地证明我们的代码能够按预期运行。请注意,在誓言中有快速,确定和可重复的单词。您希望能够在一瞬间证明代码仍然按预期工作。 如果您添加一个新功能,不会破坏任何旧功能,或者修复一个不会破坏过去任何东西的新结构,您希望能够快速,轻松地显示代码仍然执行的操作它打算这样做。 ### 承诺4 > 4. 我会经常发布小版本,这样我就不会妨碍其他人的进步。 说这个的简单方法是不检查一些东西,并检查**一个月的**东西。一种更有见地的说法,就是说你在代码中所做的一切,你应该只做一小步。如果你正在做的事情是阻止其他人,那么它不能长时间阻止它们, **因为**你是在小步骤中完成它。 在小步骤中工作的优势是巨大的。确保在提交时执行操作时,每小时都会提交一次。办理登机手续时,请经常办理登机手续。合并时,您经常合并。 ### 承诺5 > 5. 我会抓住每一个机会无畏地,不懈地改进我的创作。我永远不会贬低他们。 只要您在代码,测试或发布结构中发现问题,就**可以对其进行改进** 。即使你没有看到问题,看看你的代码并对自己说:“我敢打赌,我可以通过某种方式改善这一点。我可以通过某种方式改善这一点。” 我们是人类,我们让事情变得更好。这就是人类所做的,或者至少是我们希望人类做的事情。我们将不断改进我们的代码,并且不会故意降级它。永远不要让它变得更糟 ### 承诺6 > 6. 我将尽我所能尽可能保持自己和他人的生产力。我不会做任何降低生产力的事情。 这就是考虑你的队友和同事。与您合作的人员以及依赖您代码的人员。例如,不要做任何让其他人放慢速度的事情。不要写一个包含太多参数的函数,或者弄乱别人的代码。不要这样做,以编码其他人所依赖的代码,因为它只会**减慢他们的速度** 。 不要将长时间运行的测试放入测试套件中。保持这些测试快速运行。始终考虑你的队友。始终考虑环境。保持一切顺利。不要妨碍他们的生产力。 ### 承诺7 > 7. 我将继续确保其他人可以为我提供保险,并且我可以为他们提供保险。 这是我们经常忽略的事情。我们是一个团队,团队的行为方式是,如果另一个队友失败,另一个队友将为他们提供帮助。 在软件中,这意味着,您需要知道您的团队成员的工作方式,脚本的位置,文件的位置,代码的结构,等等。 如果他们失败了,我们不希望我们团队的知识孤岛,我们希望知识传播。 一种方法是通过结对编程。确保您可以相互覆盖。 ### 承诺8 > 8. 我将在幅度和精度上产生诚实的估计。我不会毫无疑问地作出承诺。 程序员最大的问题之一就是他们做出了被认为是承诺的估计。当你做出估计时,你需要非常清楚它是一个猜测,而不是一个非常好的猜测。我会确保当你做估计时,你可以用三个数字来表示它们:最好的情况,最坏的情况和名义上的情况。确保每个人都知道更糟糕的情况可能发生。 不要做出你不确定可以完成的承诺。如果你做出承诺,你必须保留它。 当有人对你说“我需要在星期二之前完成这件事”,并且你不确定你是否可以在星期二之前完成它,那么你就不会答应。你说“ **不** ,我不确定我能否在星期二之前完成这件事。”请仔细注意,因为有人可能会说你**试试** ,而你的答案就是“我已经在尝试了”。你已经在努力了,所以永远不要让任何人说服你更努力。 ### 承诺9 > 9. 我永远不会停止学习和提高我的技艺。 这不需要太多解释。你应该总是尝试学习新的语言,新的框架,新的技术,新的disiplines,新的过程。你需要应用你所学到的东西,不断推动你的工艺。 ### 承诺10 > 10. 我只会制作符合道德规范的代码。 程序员应该努力开发能够减少对社会的负面影响的计算机系统,例如对安全和健康的威胁,并且可以使日常活动和工作更容易。这是“发展到高标准的义务”。 ### **结论:** 也许我们应该做出更多的承诺,事实上,许多这些承诺**可能都不实际** 。然而,所有这些承诺在某种程度上都是重要的,并且作为专业程序员会采取的誓言是合理的。