Java基础学习总结(92)——Java编码规范之排版、注释及命名
为使开发人员养成良好的开发习惯,编写可读性强、易维护的程序,结合以往资料,现整理Java编码规范,将之作为开发人员的参照依据。
一、排版
1、相对独立的程序块之间必须加空行
下列情况应该使用一个空行:
两个方法之间
方法内的局部变量和方法的第一条语句之间
块注释或单行注释之前
一个方法内的两个逻辑段之间
2、单行长度不超过120个字符,如超出则换行,且操作符应放在行首,新行要有相对缩进
3、多个参数之间,二元运算符左右,for语句表达式之间应用空格隔开
表达式之间用空格隔开
4、多个短语句不要写在一行中,也就是说一行只写一条语句
5、while、for、if、do、case、default、switch等语句独占一行,且while、for、do、if等语句的执行部分无论有多少句,都要用“{}”括起来
6、程序首行缩进4个空格数,不允许使用TAB缩进(使用空格可很好的适应不同操作系统的开发工具)
二、注释
注释应遵循的原则:
注释的内容要清楚、明了,含义准确,防止注释二义性。同时应尽量避免在注释中使用缩写,特别是不常用缩写。如需要写,则进行必要的说明。
源程序有效注释量必须在30%以上。注释语言必须准确、易懂、简洁。
1、类注释以“/** */”的方式放在class 或者 interface 关键字之前,import 关键字之后
注释概要部分应要简明扼要,用简短的语句描述清除类的主要用途。注释可根据需要列出:作者、内容、功能、与其它类的关系等。
功能详细描述部分说明该类或者接口的功能、作用、使用方法和注意事项,每次修改后增加作者和更新版本号和日期,@since 表示从那个版本开始就有这个类或者接口,如下图:
类的注释
2、方法的注释,需列出方法的一句话功能简述、功能详细描述、输入参数、输出参数、返回值、异常等,如下图所示:
方法的注释
3、对代码行的注释:注释应与其描述的代码相近,对代码的注释应放在其上方,并与其上面的代码用空行隔开,注释与所描述内容进行同样的缩排。
4、对代码进行修改时,应同步修改相应的注释,以保证注释与代码的一致性。不再有用的注释要删除。
5、重写父类方法时必须进行@Override声明。
6、关键语句(条件分支、循环语句等)必须编写注释,精准的注释位置可帮助维护人员更好的理解程序,其效果有时比看设计文档要好的多。
7、方法内重要的单行代码用“//”注释,且注释语句与上句代码之间应空一行。
三、命名
1、包名采用域后缀倒置的加上自定义的包名,字母小写,均以com.xxxx开头(特殊情况除外)
在部门内部应该规划好包名的范围,防止产生冲突。部门内部产品使用部门的名称加上模块名称。产品线的产品使用产品的名称加上模块的名称。除特殊原因包结构都必须以com.xxxx开头,如果因为OEM合作等关系,可以不做要求。
2、类名和接口使用类意义完整的英文描述,英文单词的首字母使用大写、其余字母使用小写的大小写混合法,如:
OrderInformation, CustomerList, LogManager等
3、方法名使用意义完整的英文描述:第一个单词的字母使用小写、其余单词首字母大写其余字母小写的大小写混合法,如:
public static boolean checkAuthorization(){……}
public static String makeAuthorizationCode(){……}
4、相关方法中的存取属性的方法采用setter 和 getter方法,动作方法采用动词和动宾结构,如:
get + 非布尔属性名():public String getType();
is + 布尔属性名():public boolean isFinished();
set + 属性名():public void setVisible(boolean);
动词():public void show();
动词 + 宾语():public void addKey(Listener);
5、属性名使用完整的英文单词,首单词的字母小写,其他单词首字母大写其余字母小写,如:
private orderNumber;
private smpSession;
private customerName;
6、避免使用学术专业术语(魔法数字等)当作变量,用有意义的常量名来替代。
如涉及物理状态或者含有物理意义的常量,不应直接使用数字或单个字母,必须用有意义的静态常量代替,如:
定义常量代替
7、常量名用大写英文描述,单词间用下划线分隔,且用 static final修饰,如:
public static final int PAGE_SIZE = 100;
public static final String DEFAULT_START_DATE = "2020-01-01";
8、数组采用“类型[] 数组名”的方式定义 ,而不用“类型 数组名[]”的方式定义,如:
可读性差:public String getCustomers()[]{ ....}
可读性强:public String[] getCustomers(){ ....}
9、如函数的名称大于15 个字母,则可去掉单词的元音字母或者以业内约定俗成的缩写方式命名,如:
可将 getCustomerInformation() 改为 getCustomerInfo()
10、集合类的属性命名时,应尽量以其复数形式表意,如:
students, orderItems
Java基础学习总结(92)——Java编码规范之排版、注释及命名的更多相关文章
- java基础学习03(java基础程序设计)
java基础程序设计 一.完成的目标 1. 掌握java中的数据类型划分 2. 8种基本数据类型的使用及数据类型转换 3. 位运算.运算符.表达式 4. 判断.循环语句的使用 5. break和con ...
- java基础学习总结一(java语言发展历史、jdk的下载安装以及配置环境变量)
最近一段时间计划复习一下java基础知识,使用的视频课程是尚学堂高淇老师的,上课过程中的心得体会直接总结一下,方便以后复习. 一:计算机语言的发展 1:机器语言,最原始的语言,主要有“01”构成,最早 ...
- Java基础学习笔记一 Java介绍
java语言概述 Java是sun公司开发的一门编程语言,目前被Oracle公司收购,编程语言就是用来编写软件的. Java的应用 开发QQ.迅雷程序(桌面应用软件) 淘宝.京东(互联网应用软件) 安 ...
- Java基础学习总结(50)——Java事务处理总结
一.什么是Java事务 通常的观念认为,事务仅与数据库相关. 事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性(isol ...
- JAVA基础学习——1.0 Java概述
Java语言 SUN公司 1995年推出的高级编程语言 ■ 主要应用方向 Web开发和Android开发 ■ 主要特点 平台无关性:能运行于不同的平台上 安全性:去掉了指针操作,内存由操作 ...
- Java基础学习笔记十 Java基础语法之final、static、匿名对象、内部类
final关键字 继承的出现提高了代码的复用性,并方便开发.但随之也有问题,有些类在描述完之后,不想被继承,或者有些类中的部分方法功能是固定的,不想让子类重写.可是当子类继承了这些特殊类之后,就可以对 ...
- java基础学习总结——哈希编码
一.哈希编码
- Java基础学习笔记八 Java基础语法之接口和多态
接口 接口概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”.接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成.这样将功能的定义 ...
- Java基础学习笔记三 Java基础语法
Scanner类 Scanner类属于引用数据类型,先了解下引用数据类型. 引用数据类型的使用 与定义基本数据类型变量不同,引用数据类型的变量定义及赋值有一个相对固定的步骤或格式. 数据类型 变量名 ...
- Java基础学习笔记六 Java基础语法之类和ArrayList
引用数据类型 引用数据类型分类,提到引用数据类型(类),其实我们对它并不陌生,如使用过的Scanner类.Random类.我们可以把类的类型为两种: 第一种,Java为我们提供好的类,如Scanner ...
随机推荐
- CF662 C. Binary Table
题目传送门:CF 题目大意: 给定一个\(n\times m\)的表格\((n\leqslant 20,m\leqslant 10^5)\) 每个表格中有\(0/1\),每次可以将一行或者一列翻转,问 ...
- codeforces 615 B. Longtail Hedgehog (DFS + 剪枝)
题目链接: codeforces 615 B. Longtail Hedgehog (DFS + 剪枝) 题目描述: 给定n个点m条无向边的图,设一条节点递增的链末尾节点为u,链上点的个数为P,则该链 ...
- 喵哈哈村的魔法考试 Round #5 (Div.2) ABCC2
官方题解:http://www.cnblogs.com/qscqesze/p/6516139.html 喵哈哈村的狼人杀大战(1) 描述 喵哈哈村最近热衷于玩一个叫做狼人杀的游戏! 张小田今天她抽到的 ...
- req.getParameter()无法获取参数(附前端json序列化)
问题:前端用Ajax的post方式想servlet传递参数,servlet的getParameter()方法无法获取参数. 前端代码: $.ajax({ url: '/TestWeb/addBook' ...
- 关于web中的路径
做了许多Demo发现,浏览器解析的路径和服务器解析的路径是不同的.我们知道,路径加上/的时候,表示的是绝对路径的意思,而如果是服务器解析的话,这个/相对的是我们的web应用,即相对于http://19 ...
- mongoDB内置文档定义
在最近的设计数据库时,犯了一个低级的错误,就是设置内置文档是定义了错误了,导致数据取不出,去找了很多资料都无法解决.最后看了一了一下自己设置的model文件.配置错误,所以导致数据取不出了. 数据库时 ...
- Json和序列化总结
一.序言 遇到问题,就经常逛园,不知你是否曾有,曾经遇到的问题,或者在园子里看到问题的方案,过一段时间,有可能还会摔跤,哈哈...大神请勿喷,小弟记忆不太好,还过来找资料,如果自己写把问题或某个知识点 ...
- ubuntu安装mysql多实例
想要尝试mysql的读写分离,在云上安装完mysql之后突然想到一个问题:我本机是没有公网IP的. 开始尝试在唯一一台云服务器上安装多个mysql实例. 主要步骤: 1.新建MySQL目录 (1):新 ...
- 模板方法模式及php实现
模板方法模式: 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.TemplateMethod 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 角色: 抽象模板角色:抽象模板类, ...
- 使用MySQL统计页面访问及排名
统计访问页面数量,以分辨率进行排名 SELECT CONCAT(`height` , '*', `width`) AS `resolution` , COUNT(CONCAT(`height`, '* ...