`
wx1569484809
  • 浏览: 64123 次
文章分类
社区版块
存档分类
最新评论

《整洁规约代码简单说》

 
阅读更多

   

  去年有幸参加了公司的一个代码质量活动,现将当时撰写的文档分享下。代码规范要求有很多,需要实际开发过程中逐步遵守或改进。
   本篇文章篇幅较小(当时实际规约写了较多,但限于公司期刊文字输出要求仅截取了部分)

 

 

  最近公司举办代码质量pk,有幸自己写的部分代码被选中,结合本次竞赛及自己的理解谈谈《整洁规约代码简单说》。

  一个良好的系统,不仅依赖架构及项目管理,更与代码质量紧密相关,好的代码,既会在整洁与规约度较为可靠,也为后期维护、升级奠定了良好的基础。

  那如何写出整洁规约的代码?有如下小技巧可遵循。

50839a59f2f7dc2136787d4595271cf2462.jpg

 

 一、有意义的明确命名

  定义看得清、读得出、可搜索的明确名称,避免思维映射,比如

  1) String n; //名称  (n的定义需要注释来补充,没有做到名副其实)

    String userName; (修改下名称就能轻易知本意,减少模糊度)

    int l,O; (l与O变量名常被认为是"壹"和"零",实际是小写字母l或大写字母O,因此定义的名称要避免误导) 

  2) 将类名和对象名定义成名词或名词短语,比如Customer、Account; 将方法名定义成是动词或动词短语,比如update、save

  3) 名称使用标准命名法(驼峰形式),比如outputUserName / localHost / getMemberMessage等

 

 二、简单短小的函数和类

  1) 函数规约

   a 函数要易于阅读与理解,推荐20-30行的短小函数,减少占全屏的函数。

   b 定义只做一件事的简单函数,判断一个函数是否只做了一件事,看是否能再拆出一个函数。

   c 推荐定义零参数函数,其次是一元函数,再次是二元函数,尽量避免三元函数,超过三个参数则考虑将其封装成类进行传递。

 

  2) 类规约

  a 与函数一样,也应短小,使用单一权责的原则来界定类的范围,不要试着去创建一个包含几十个方法的“神级类”。

  b 提高类的内聚性,使方法与和变量结合成一个逻辑整体。

 

 三、精简准确与表达到位的注释

  1) 好的注释有法律信息,有对复杂代码段的意图解释,有对可能发生意外的警示注释,有公共的API编写良好的Javadoc。

  2) 坏的注释有自言自语的描述,有多余的注释(没有人喜欢看小说一样的注释),有详细的日志式注释。

  3) 能用函数或变量时就少用注释

  //会员集合包含某一会员号时说明是合法的会员

  if(memberModule.getMemberCodeItem().contains(memberBean.getMemberCode()))

 

  调整后的代码如下(无需注释知其意)

  ArrayList memberCodeItem = memberModule.getMemberCodeItem();

  String memberCode = memberBean.getMemberCode();

  if(memberCodeItem.contains(memberCode)) 

  充分使用git/svn等源代码控制系统,将注释掉的代码或冗余注释或不执行代码(死代码)及时清理,无需担心丢掉。

 

 四、垂直与横向的格式

  1) 垂直格式体现有短小精悍,推荐不超过500行,减少超过1000行的文件。超过2000行代码文件就如一篇长故事,故事中充斥着毫无组织的描述、日期、名字等,没人愿意去读它。

  2) 横向格式,建议无需拖动滚动条到右边的原则,比如单行字符数100个以内。

  良好的格式是我们与代码沟通最好的方式!

 

 五、日志使用

  1) 使用框架SLF4J中的API,比如门面模式,利于维护和各个类的日志处理方式统一,定义如下:

  private static final Logger logger = LoggerFactory.getLogger(MemberServiceImpl.class);

  2) 恰当使用error/warn/info级别的日志输出

  异常信息应该包括两类:现场信息和堆栈信息

d97afff56b8aedfa127aa3cf033bea39eaf.jpg

  使用warn日志级别来记录输入参数错误的情况

  96b60b5cb7e394e6bf99e13fd56c9a4df53.jpg

  选择地输出info日志,避免把服务器磁盘撑爆

41e6e6ad4d21aea02dc6c78beb5be939333.jpg

 

 六、错误处理

  1) 使用异常try-catch-finally而非返回码,不对大段代码进行try-catch。

  稳定代码指无论如何不会出错的代码(无需catch),对于非稳定代码的catch尽可能进行区分异常类型,并做对应的异常处理。

  2) 防止NPE问题

  不使用null值做为返回值,减少调用者的非空判断,使用抛出异常或返回具体特例对象。

  不将null值传递给其它方法,减少报NullPointerException的异常。

 

我们都不想写出一个烂摊子代码,也想一直保持一切有序,进度可以重订,需求可以重新定义,团队动态可以修正,但糟糕的代码会一直腐败发酵,这无情地拖着团队的后腿(慢如蜗行)。而代码质量是程序员上百甚至上万次全心投入的结果,试着秉承《糟糕的代码可能毁了系统甚至毁了公司》这一警惕态度来不断的逐步改进写出更好的精练、简单、易于理解的代码。

如下为:公司技术期刊截图

转载于:https://my.oschina.net/devpmp/blog/3055235

分享到:
评论

相关推荐

    java程序开发规约

    这份规约涵盖了命名规范、代码结构、注释规则、异常处理、并发控制等多个方面,对于Java开发者来说,理解和遵循这些规约至关重要。 一、命名规范 1. 类名应采用名词或名词短语,首字母大写,如`UserName`。 2. 方法...

    前端代码编写规范-编程规约和Vue项目规范

    2.2.5 避免手动操作DOM,删除无用代码,保持代码整洁。 这些规范旨在提升代码质量,减少错误,促进团队协作,使得代码更易于维护和扩展。通过遵循这些规约,开发者可以创建出高效、稳定且易于理解的前端应用。

    阿里巴巴规约插件

    综合而言,阿里巴巴规约插件不仅仅是一个简单的代码规范工具,它更是一个能够提高开发者工作效率、保障项目质量、促进团队协作的综合性解决方案。它将阿里巴巴的编码规范理念融入到日常开发流程中,让遵守规范成为一...

    前后端接口规约.pdf

    同时,为了保持代码的整洁和可读性,建议将不同的功能对应到不同的实体对象上。 2. **响应数据**:响应数据统一采用JSON格式,并遵循以下规范: - **基本格式**: ```json { "code": 200, "message": "success...

    Java 编码 规约

    2. **换行**:当一行代码过长时,应在有意义的位置进行换行,如操作符之后,保持代码的整洁。 #### 五、注释的艺术 注释不仅是对代码的解释,也是与未来维护者交流的桥梁。 1. **实现注释**:用于解释代码的功能...

    基于《阿里巴巴Java开发手册》,整理的Java开发编程规约。

    【Java开发编程规约】是基于《阿里巴巴Java开发手册》整理出的一套代码编写标准,旨在提高代码的可读性、稳定性和团队协作效率。规约涵盖了命名规范、编码规范、注释规范等多个方面,旨在形成一套通用的编程风格指南...

    实验3-由底向上语法分析及中间代码生成1

    10. **代码组织**:为了保持代码的整洁和逻辑清晰,将功能函数封装起来,利用C++的string和STL容器,增强代码的可读性和健壮性。 通过这个实验,学生可以深入理解编译器设计的核心部分——语法分析,以及如何将理论...

    《Java开发手册(嵩山版)》.pdf

    设计规约涉及软件设计原则,如YAGNI(你不会需要它)、KISS(保持简单,傻瓜)等,指导开发者避免过度设计,保持代码简洁。 手册中规约分为强制、推荐和参考三个级别,以适应不同场景的需求。"说明"提供了规约背后...

    IDEA 阿里JAVA规范插件的具体使用

    它不仅能够帮助开发者快速发现并修复代码中不符合阿里巴巴Java规范的问题,还能提升代码质量,确保项目代码的整洁、统一。通过本文的介绍,相信读者已经掌握了如何在IDEA中安装和使用这款实用的插件,以及如何处理...

    java开发手册.docx

    3. 代码格式:代码应保持整洁,每个类、方法和逻辑块之间应有空行,大括号应始终使用,即使只有一行内容也要使用大括号,以增加代码可读性。 4. OOP规约:强调面向对象设计原则,如单一职责、开闭原则、里氏替换...

    .NET(C#) 语言编程规范

    3. **美观性**:让代码更加整洁,便于阅读。 4. **逻辑清晰性**:使得代码逻辑更加明确,易于理解和调试。 #### 术语定义 - **Pascal 大小写**:标识符中每个单词的首字母大写。适用于三个或更多字符的标识符,...

    java阿里巴巴开发手册

    - 命名规约方面,手册提出了对类名、方法名、变量名等使用UpperCamelCase或lowerCamelCase风格的强制性要求,以便于代码的整洁和一致性。例如,类名应使用UpperCamelCase风格,而方法名、参数名、成员变量等则使用...

    阿里JAVA编码规范手册.docx

    2. 不要在代码中大量使用单行注释,以免影响代码整洁。 3. 对于复杂的逻辑或难以理解的代码,应添加解释性注释。 九、其它: 1. 遵循DRY(Don't Repeat Yourself)原则,避免代码重复。 2. 使用枚举代替魔法数字,...

    阿里巴巴开发规范

    适时的重构可以保持代码的整洁和可维护性。 总的来说,《阿里巴巴开发规范》是一份全面的指南,它不仅关注技术细节,更注重开发过程中的最佳实践,帮助开发者养成良好的编程习惯,提高开发效率,降低维护成本,是每...

    JDK1.8_lombokPlugin.rar

    开发者可以通过使用这些资源来提高基于Java 1.8的项目开发效率,特别是当他们希望利用Lombok简化代码并保持代码整洁时。同时,了解和掌握JDK 1.8的新特性以及Lombok的工作原理和用法,对于提升Java开发能力是十分...

    《唯品会Java开发手册》2版

    - **重构策略**:定期对代码进行重构,保持代码整洁。 #### 3. 规范落地规则 - **代码格式化模版与Sonar规则检查**:通过集成开发环境(IDE)中的格式化工具以及SonarQube等工具,确保代码符合规范要求。 - **定制...

Global site tag (gtag.js) - Google Analytics