热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

代码整洁规范要求

代码规范注释不恰当的信息***paramnum3待加的数字*publicintadd(intnum1,intnum2){returnnum1num2;}就比如上面的代码

代码规范


注释


  • 不恰当的信息

/*** @param num3 待加的数字*/public int add(int num1,int num2) {return num1+num2;}

就比如上面的代码,注释的参数都不对,有可能是在写作过程中进行了修改,然后没及时的进行添加参数,不正确的参数注释,比不写注释都更容易误导,所以应该避免写注释,尽量让人看到方法名便能明白方法的作用。




  • 废弃的注释

/*** @param num1 待加的数字* @param num2 待加的数字* @param num3 待加的数字*/public int add(int num1,int num2) {return num1+num2;}

可能原来方法中存在三个参数,但是后来方法发生了变更,只剩下两个参数了,但是注释中的参数却没有及时消掉。




  • 冗余注释

/*** @param num1 待加的数字* @param num2 待加的数字*/public int add(int num1,int num2) {return num1+num2;//返回两个数相加后的结果}

上面的代码中就是注释的严重冗余,明明很简单的,一眼就能看得懂的,非要加一些注释来干扰阅读。




  • 糟糕的注释

/*** 该方法用于实现两个数的相加,一个数用来作为第一个参数,另一个作为第二个参数,并在最后把他们的相加的结果返回* @param num1 待加的数字* @param num2 待加的数字*/public int add(int num1,int num2) {return num1+num2;//返回两个数相加后的结果}

看注释了半天,也不知道这个是干嘛的。




  • 注释掉的代码

/*** 该方法用于实现两个数的相加,一个数用来作为第一个参数,另一个作为第二个参数,并在最后把他们的相加的结果返回* @param num1 待加的数字* @param num2 待加的数字*//*public int add(int num1,int num2) {return num1+num2;//返回两个数相加后的结果}*/

把代码注释掉而不删除,不能看做是一个程序员应该做的,在现在的代码中,大部分都用到了代码版本管理工具,完全不需要担心,注释了代码之后,就没法再把代码进行还原回来。不用的代码就及时的干掉,不要放在这里干扰阅读




环境


  • 需要多步才能实现的构建
  • 需要多步才能做到的测试

函数


  • 过多的参数
  • 输出参数
  • 标识参数
  • 死函数

一般性问题


  • 一个源文件中存在多种语言
  • 明显的行为未被实现
  • 不正确的边界行为
  • 忽视安全
  • 重复
  • 在错误的抽象层级上的代码
  • 基类依赖于派生类
  • 信息过多
  • 死代码
  • 垂直分割
  • 前后不一致
  • 混淆视听
  • 人为耦合
  • 特性依恋
  • 选择布尔参数
  • 晦涩的意图
  • 位置错误的权责
  • 使用解释性变量-》将计算过程打散
  • 函数名称应该表达其行为
  • 理解算法
  • 把逻辑依赖改为物理依赖
  • 使用多态代替If/Else或Switch/Case
  • 遵循标准约定
  • 使用命名常量代替魔法数
  • 准确
  • 结构甚于约定
  • 封装方法
  • 避免否定性条件
  • 函数只做一件事
  • 掩蔽时序耦合-》顺序调用产生下一个函数所需的结果
  • 封装边界条件
  • 函数只在一个抽象层级上
  • 在较高层级放置可配置数据
  • 避免传递浏览

Java


  • 避免使用通配符过长导入类
  • 不要继承常量
  • 使用枚举代替常量

名称


  • 采用描述性名称
  • 名称应和抽象层级相符
  • 尽可能使用标准命名法
  • 无歧义的名称
  • 为较大作用范围选用较长名称
  • 避免编码-》前缀
  • 名称说明具体作用

测试


  • 测试不足
  • 使用覆盖率工具
  • 别略过小测试
  • 被忽略的测试就是对不确定事物的疑问
  • 测试边界条件
  • 全面测试相近的缺陷
  • 测试失败的模式有启发性
  • 测试覆盖率的模式有启发性
  • 测试应该快速

推荐阅读
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
author-avatar
兰毛zg
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有