是什么造就了 "production code"?

What makes a "production code"?

我是一名研究科学家,我们编码的方式绝对不被认为是 "production code" 那是原型代码,但是生产代码是什么? 测试可扩展性、处理实时流量的能力以及测试所有边缘情况? 但是还有什么,例如我还听说 Python 比 Java 或 C# 少 "production language",它们可以生产的标准是什么。

任何 books/references 将这一点画回家或升华它,也很棒! 提前致谢

生产代码通常意味着它已准备好运送给客户。

  1. 最明显的错误已修复
  2. 代码结构良好,self-documenting
  3. 编写了自动化测试并具有足够的覆盖率
  4. 它在被合并到主要代码库之前已经过同行评审过程。
  5. 它将通过 "build system" 可能会自动检查规则,例如:编码约定、复杂性、linting、测试、编译。有时这可能包括成功部署到测试环境。

这与非生产代码相比如何?

几乎所有开发人员都是从 prototype/non-production 代码开始的,即使是使用测试驱动开发 (TDD) 的开发人员也是如此。他们的代码的目标是“只是让这个工作”,这样他们就可以开发出解决问题的第一步。这通常会导致变量命名不当、函数过长(命令数量)、格式不正确以及通常很少或根本没有测试。

一旦开发人员有了令人满意的工作解决方案,他们就会回去清理代码。他们修正拼写错误;使用 design patterns, if they see one that's helpful; they make their code fit the teams coding conventions and style guide, some of which lead to real heated debates on using tabs vs spaces.

最好的思考方式是:

编写代码的第一步是编写软件草稿,让开发人员在页面上表达想法,直到他们完成“故事”或功能集。目标是让他们理解它。

第二步,即为生产做好准备,就是对其进行改进,以便其他人可以理解他们的代码。用论文写作术语来说,你给它一个更连贯的结构,并试图更好地向其他人传达你的意思。

这还不是全部。

虽然这通常适用于编写代码,但“准备好投入生产”的部分内容包括实际应用程序代码不涉及的所有步骤。

通常这是将代码交到客户手中或上线所需的所有步骤。

这可能是在创建一个 Continuous Integration and Continuous Deployment 系统。设置服务器、部署组、监控系统等。

如果没有这些东西,您的应用程序可能不会被您的组织视为生产就绪。