如何编写整规范的代码
代码整洁规范之道
有意义的命名
见名知意:可轻松根据名称,知道大致用途,而不是使用拼音缩写等,让人费解
有意义的区分:用途不同时,名称也记得区分开来,避免因名称类似而导致误用
避免使用编码(字母、数字前后缀区分等):不能很好知道用途和差异,增加了理解成本
类名、对象名,使用名词或名词短语
方法名应是动词或动词短语:方便理解方法要做什么
每个概念对应一个词,一以贯之,方便后续查找:
例如表示查找有get/find/obtain/search等,建议使用统一的概念,减少理解和沟通成本
函数
- 简短,避免过长函数,太长可提取为小函数:增强可读性,且小函数可复用,减少主函数修改成本
- 单一职责:一个函数只专注一件事,避免函数臃肿
- 输入参数尽可能少:太多参数增加理解成本,且容易传错参;过多参数可考虑封装为一个实体
- 使用异常替代返回错误码:错误码的判断会导致更深层次的嵌套结构,调用者需要了解错误码,且错误码不好判断是异常还是业务错误
- 提取try/catch代码块为新函数,try/catch只囊括存异常代码:缩小try/catch的粒度,保持性能
- DRY原则,避免重复代码:可将重复代码提取后复用,减少后续代码变更的成本
- 使用第三方库:优先使用类库提供的方法,经过多次验证的代码出现Bug的概率更低,可择优使用;避免自行编写踩坑、重复造轮子
注释
- 注释不能美化糟糕的代码:优雅的代码才是基础,不要试图用过多的注释,来掩盖代码的糟糕
- 用好的代码命名自解释:避免过多冗余的注释
- 警示地方须注释:关键地方添加注释,促使变更时的重视
格式
- 垂直格式
- 向报纸学习
- 不同概念代码块,空行隔开:提升可读性
- 紧密联系的代码,应靠近:高内聚
- 垂直距离
- 局部变量:尽可能靠近其使用位置
- 实体变量:类的顶部声明
- 相关函数:同类中相互调用函数,调用者尽可能放在被调者上面
- 概念相关:相关代码应该放到一起
- 横向格式
- 避免单行过长
- 水平对齐
- 注意缩进层次
编码
- 卫语句返回:对于不符合的条件,使用卫语句快速失败返回,避免过多分支判断
- 避免魔法值:魔法值可能只有当时编写时知道意义,后续理解成本极大;可提取到常量类或者枚举中,统一管理
- 当成员变量值不改变时,优先定义为静态常量
- 注意检验空指针,尤其是链式调用时
- 类成员与方法的可见性最小化:最少知道原则,避免错误调用
- 尽量减少对变量的重复计算
参考文献
《代码整洁之道》
如何写出优雅的代码
25种代码坏味道总结+优化示例
如何编写整规范的代码相关推荐
- Python代码规范:代码规范整改和编码技巧-flake8扫描问题整改
为了修正flake8扫描出的问题,需要按照以下步骤进行: 1. 分类问题:首先需要对扫描得到的问题进行分类,以便更好地理解和解决它们.例如: - 代码格式问题(如缩进不正确.行长度超过限制等) - 变 ...
- 初学编程,不了解编写规范,代码不能运行,幸好有入门宝典
本章节我们来讲述一下Python的编码规范,通过详细对代码编写规则以及命名规范等进行介绍. 1.编写规则 Python采用PEP 8 的编码规范,接下来会讲解一些我们在学习Python过程应该严格遵守 ...
- 基于java 工单管理_实训任务工单1-2(编写规范Java代码) 实训任务工单1-2(编写规范Java代码).docx_学小易找答案...
[其它]实训任务工单4-1(泛型类.泛型方法的应用) 实训任务工单4-1(泛型类.泛型方法的应用).docx [简答题]教学工单5-1Java序列化机制的使用 [填空题]The name of my ...
- 表示python代码块的是_编写高质量Python代码的59个有效方法,你用过几个
欢迎点击右上角关注小编,除了分享技术文章之外还有很多福利,私信学习资料可以领取包括不限于Python实战演练.PDF电子文档.面试集锦.学习资料等. 这个周末断断续续的阅读完了<Effectiv ...
- [转]敏捷开发中编写高质量Java代码
本文转自:http://dev.yesky.com/103/11164603.shtml 敏捷开发的理念已经流行了很长的时间,在敏捷开发中的开发迭代阶段中,我们可以通过五个步骤,来有效的提高整个项目的 ...
- python中如何编写代码输入多个数据并把它们放在一个列表中去_编写高质量Python代码的59个有效方法,你用过几个...
欢迎点击右上角关注小编,除了分享技术文章之外还有很多福利,私信学习资料可以领取包括不限于Python实战演练.PDF电子文档.面试集锦.学习资料等. 这个周末断断续续的阅读完了<Effectiv ...
- 敏捷开发中编写高质量Java代码
原文出处:http://java.csdn.net/a/20100308/259219.html 敏捷开发的理念已经流行了很长的时间,在敏捷开发中的开发迭代阶段中,我们可以通过五个步骤,来有效的提高整 ...
- html5转apicloud,使用APICloud编写优雅的HTML5代码
使用APICloud编写优雅的HTML5代码<一>一.实现下拉刷新: 默认样式>代码清晰简洁明了,符合ECMA262规范的callback,最少只需5行代码: apiready = ...
- 中文 Markdown 编写格式规范的命令行工具 lint-md
lint-md 用于检查中文 markdown 编写格式规范的命令行工具,基于 AST 开发,且方便集成 ci.Cli tool to lint your markdown file for Chin ...
最新文章
- komodo edit linux,Komodo Edit是什么
- Git(创建版本库)
- 使用 Node.js、Express、AngularJS 和 MongoDB 构建一个Web程序
- 无向图双连通分量BCC(全网最好理解)
- 服务器安装三节点RabbitMQ集群(2)
- 尝试自动重定向的次数太多_阿里Arthas 3.1.0版本:在线教程、内存编译器和强大的自动补全...
- 201509-2-日期计算
- python 无法初始化设备prn_彻底搞懂Python一切皆对象,面试必过
- Trac常用插件描述! - wang_xf的Study home - 博客频道 - CSDN.NET
- SVN代码更新群发邮件通知
- 二叉搜索树的学习笔记(有解释)
- 整理C知识点--函数(重点)
- .com.cn域名是什么?.com.cn域名有哪些优势?
- Hive on spark 执行加载不了spark的jars
- 字体图标svg改变颜色
- speedoffice(PPT)怎么设置文字竖向
- 信息安全与管理2002_李付贵
- 用element-ui el-select 实现拼音码搜搜功能ts版
- 计算机网络基础之域名系统
- 手持PDA助力零售卖场管理