产品代码的建议标准

怎样的代码才能作为产品代码提交到代码库中,使系统能够持续健康地成长?

第一级: 无语法错误,编译通过, 能够启动应用; 消除警告与错误;

第二级: 简洁清爽的排版,合理的命名, 一致的风格, 适宜必要的注释;

第三级: 能够处理正常情况下的功能实现,保证正常情况下的逻辑正确;

第四级: 能够处理不合法输入,给出错误提示;能够处理可能出现的错误和异常,输出容易排错的日志;

第五级: 使用相互协作良好的短小方法; 消除一个方法中含有大段逻辑的情形;

第六级: 编写的代码有比较完善的单元测试用例;对错误和异常进行了测试;

第七级: 避免常见的错误,比如 +-1、越界、空指针、 传值或引用错误、 变量未初始化为合适值、多条件下的逻辑与或非错误、死循环、修改全局变量;

第八级: 考虑基本的安全问题,比如SQL注入攻击、访问或操作权限限制、屏蔽敏感信息;

第九级: 如果涉及到性能,比如大量数据处理,选择合适的容器及算法,使性能保持在 O(nlogn) 或 O(n);

第十级: 使用合理的设计模式组织代码结构,消除重复,实现可扩展性;

第十一级: 开发时考虑后期维护,使错误情况的排查更加高效,从错误中恢复更加容易;

第十二级: 对共享可变的状态使用同步访问,使用并发类、线程池而不是原始的线程对象;

第十三级: 对于部分业务逻辑,使用合适的数据库事务和分布式锁同步;

我的观点是:

(1)   常见的逻辑,代码应当达到第八级, 才能作为产品代码提交到代码库中;

(2)   复杂的逻辑,代码应当达到第十三级,才能作为产品代码提交到代码库。

在提交代码之前, 对照该标准逐一核查, 满足指定级别的标准后提交。

第一级的说明:  代码中含有警告与错误, 应当细究其原因, 如果是 IDE 误报或允许存在, 使用适当方法消除它。

第二级的说明:  主要是可读性, 节省维护者的时间和精力。

第四级的说明:  如何使得日志的输出更适合于快速定位错误原因, 便于后续维护, 是值得下的开发功夫。

第五级的说明:  方法中含有大段逻辑, 会使得维护者耗费大量的脑细胞和时间精力去阅读和理解, 更难以测试, 更难以修改, 应当视为一种“谋杀其他程序员生命的行为”, 予以坚决杜绝。 如果不得不这样做, 必须使用空行将这些逻辑分割成多个逻辑段, 每个逻辑段辅以必要的注释, 说明每个步骤做了什么工作。

第六级的说明:   记得对错误和异常进行正确的测试。正常情况下, 对不应该抛出异常的测试。

第七级的说明:   修改全局变量不算是错误, 但是容易产生难以排查的错误。

第八级的说明:   密码等敏感信息不可出现在日志中; 若有风险性操作, 必须加以权限控制。

第九级的说明:   如果一个功能需要在多层循环遍历多个集合的数据, 不妨进行预处理, 利用预处理信息加速后续的处理。通常预处理都能使 O(n*n) 的算法复杂度降低到 O(n) 或 O(nlogn)。

第十一级的说明: 比如要做批量插入过保迁移实例功能。 如果若干实例在数据库中不存在,或者输入人员误输入, 该如何返回?

如果仅仅返回一个简单消息:Some are not exist,那么就必须让人来手工排查是哪些迁移实例不存在或误输入,这必定是个耗时耗力的情况;

因此,合理的返回是: 至少指出有哪些实例不存在,这样输入人员就只需要确认并修复这些不存在的实例即可。

预防胜于治疗。

时间: 2024-10-26 02:26:58

产品代码的建议标准的相关文章

编写高质量JAVA程序代码的建议

--------------------------------------------------------------------------------------------------- 前言:原著<改善JAVA程序的151个建议>有151个建议,我在拜读的过程根据自己的理解合并了其中的几个,并将每个建议的核心要义进行了一次纯手工提炼,以方便想阅读这本书的同行能够更快的掌握这本书的所有核心内容. -------------------------------------------

陈松松:选择适合视频营销暴利产品的4大标准

本文作者:陈松松 每个视频,都是你的金牌业务员 这是我的第5篇视频营销原创文章 我知道你一定会大致看一下,但今天的文章一定要一字不落! 今天的这个分享有关最适合视频营销的暴利产品,是我很早就想分享的,只是没有合适的机会! 主题也比较简单,核心内容我总结为4点: 第一,人得逼,马得骑 第二,选择视频营销暴利产品的4大标准 第三,送你1款最暴利的是视频营销产品 第四,商业的本质就是信息不对称 第五,给你2个选择暴利产品的平台做参考 我先来分享第一点, 第一,人得逼,马得骑 写文章真的是越来越有感觉了

前端代码9种标准最佳实践:CSS

前端工程师对写标准的前端代码的重视程度很高.这些最佳标准实践并不是那个权威组织发布的,而是由大量的前端工程师们在实践过程中的经验总结,目的在于提高代码的可读性,可维护性和性能.那么接着上一篇,我们再来谈谈CSS代码的一些标准实践. 1,命名 和其他语言规范一样,css的命名也讲究命名要有意义,命名要尽可能短但是要足够表达含义:命名的词用连字符连接. 不规范的命名: 1 #navigation{ 2 } 3 .demoimage{ 4 } 5 .error_status{ 6 } 规范的命名: 1

单元测试代码比产品代码还要多?

[图一] 是单元测试代码? [图二] 是产品代码? 显而易见的是, 单元测试代码比产品代码还要多, 这合理吗? 当然合理! 产品代码虽然是只有短短的几行; 处理订阅者订阅赛马的消息? 但, 却会衍生出许多不同的使用者场景; 如: 没有订阅者订阅, 只有单一或多个订阅者, 某个订阅者重复订阅, 某个订阅者取消订阅-..等等? 单元测试, 根据这些不同的使用者场景, 分别有相对应的单元测试代码 (测试用例) ?  所以, 单元测试代码自然会比产品代码还要多? 但, 这样的付出 (投资) 绝对是值得的

手游渠道SDK建议标准

手游渠道平台纷乱芜杂,但提供的基本功能大同小异,这里就登陆和支付两个基本功能,提出一点标准化的建议,仅作为在接入了30+个渠道平台后的一点想法: *登陆 -过程: 游戏客户端-->渠道服务:申请本次登陆的渠道token {游戏ID} 渠道服务-->游戏客户端:返回本次登陆的渠道token {渠道token} 游戏客户端-->游戏开发商服务:提交 {渠道名,渠道的token,签名} - 签名方式常有:md5(渠道名,渠道token,) 游戏开发商服务-->渠道服务:验证签名,提交 {

编写更好的jQuery代码的建议

编写更好的jQuery代码的建议 2013/12/05 | 分类: WEB前端, 开发 | 15 条评论 | 标签: JQUERY 分享到:125 本文由 伯乐在线 - yanhaijing 翻译自 Mathew Carella.欢迎加入技术翻译小组.转载请参见文章末尾处的要求. 讨论jQuery和javascript性能的文章并不罕见.然而,本文我计划总结一些速度方面的技巧和我本人的一些建议,来提升你的jQuery和javascript代码.好的代码会带来速度的提升.快速渲染和响应意味着更好的

Python代码风格建议(转)

python 以其结构严格著称,同时也以其命名规范散漫出名,算乱无规矩的命名尤其给开发人员带来理解上的误区. 尤其像python.ruby动态语言,由于在运行期随时可能出现方法或者属性的增减,规则的命名尤其重要. ruby语言本身定义的语法规则较为随意,但却不乏一一对应的隐含规则,使人一目了然.其命名规则甚至渗透进了语言本身的规范当中 在命名规则这一点上python显得没规没距.需要逐步养成一个好的编码命名规范. 本文从各大站点文章中搜集了一些代码风格,命名规范.便于学习参考. 代码风格: 使用

多产品代码架构

对于多产品代码来说如何,对于不同产品相同属性不同参数如何简单code 举个例子: 其实很简单,比如说你们班有很多小伙伴,如何设置信息呢,用到了struct struct STUDENT_S{ string name; int age; bool sex; string addr; ... }; struct STUDENT_S g_student_param[] = { {“Li Lei”, 12, true, "beijing"}, {"Han Meimei",

计算机类产品评标技术评分标准研究

评价标准 在计算机采购时,人们首先想到的三大件是:CPU性能.内存容量.显示器.由于显示器更新速度相对于CPU而言比较慢,同时,KVM的利用使得多台主机共用显示器的情况越来越多,所以,人们在采购计算机特别是服务器类的产品时,经常只评价主机的性能,因此,本文略过了与显示器相关的内容. (一)CPU的性能指标 CPU是整个计算机系统的核心,它往往是各种档次计算机的代名词,CPU的性能大致上反映出计算机的性能,因此它的性能指标十分重要.其主要指标有:    (1)主频:CPU的时钟频率(CPU Clo