Java编程风格
来自《The Elements of Java Style》-《Java编程风格》一书,值得一读的书籍,会让你在细节上节省很多时间,合作之间更加愉快!
好处不多说了,但是有几个原则如下:
1.保持原有风格
2.坚持最小惊奇原则
3.第一次就做对
4.记录所有非规范行为
格式规范:
1.缩进嵌套的代码:在每个代码块和嵌套中加入缩进,缩进代码,加强可读性。这些地方包括【类定义,内部类定义,方法定义,静态块,for循环语句,if-else语句,try、catch和finally块,匿名内部类,while语句,do-while语句】
2.断开很长的句子:第一,如果包含了逗号,那么在每一个逗号后面都另起一行,把逗号后面的每一个表达式都和逗号前面的表达式的第一个字母对齐。第二,应该在优先级最低的运算符之前断行。
3.使用空白:关键字和左括号之间,右括号和紧随其后的关键字,除了"."之外的运算符与其前后的表达式之间用空格隔开。每个逻辑上独立的方法和代码段之间,定义类或者接口的成员之间,每个类和接口之间应该加入空白行。
4.不要直接使用Tab控制符:不同环境对Tab控制符的解释也是不同的。
命名约定:
1.名称应该具有实际意义
2.使用人们熟悉的名称
3.谨慎使用过长的名字,可以使用简明通用的缩写
4.尽量保留元音字母
5.缩写词的第一个字母大写
6.不要使用大小写来区分的名字
包命名:
1.用你所在组织的域名的倒序小写形式作为包的根限定词
2.使用单独的小写词作为每个包的根名
3.仅当新旧版本二进制兼容的时候,其包可以使用相同的名字,否则,请使用新名字
类型命名:
1.类和接口名中的每个单词的第一个字母大写
类命名:
1.用名词命名类
2.具有成组相关属性,静态服务或者常量的类名字使用复数形式
接口命名:
1.用名词或者形容词命名接口
方法命名:
1.方法名中的第一个单词小写,其后每个单词的第一个字母大写
2.用动词命名方法
3.遵循JavaBean中命名属性访问函数方法:set,get,is
变量命名:
1.变量命中的第一个单词小写,其后的每个单词的第一个字母大写
2.用名词命名变量
3.集合引用名要用复数形式
4.为不重要的临时变量简历并使用一套标准名字
字段命名:
1.使用this字段变量可以区分开局部变量
参数命名:
1.构造函数或者"set"方法给字段分配参数赋值,参数名应该和字段名相同
常量命名:
1.常量的每个单词均大写,单词之间使用下划线连接
文档约定:
1.为使用和维护你的代码的人编写文档
2.注释和代码要同步
3.使用积极的语气,省略无用的词语
注释类型:
1.用文档注释来描述编程接口
2.用标准注释格式隐藏代码而不必删除它们
3.用单行注释解释实现细节
文档注释:
1.在编写代码前描述编程接口
2.为公用,受保护,包,私有成员建立文档
3.为每个包编写总结和概述
4.为包的每个应用程序或组编写概述
注释风格:
1.对所有文档注释使用统一的格式和组织结构
2.关键字,标识符和常量应放到<code>...</code>标签中
3.将代码放入<pre>...</pre>标签中
4.在标识符第一次出现的时候用{@link}标签
5.为Javadoc标签简历并使用一套固定的顺序
6.使用第三人称叙述的形式
7.编写独立的概述
8.省略概述中动作和服务的主语
9.省略事物概述中的对象和动词
10.使用this而不是the来指代当前类中的实例
11.方法名或者构造函数名不需圆括号,除非你想突出一个特殊的签名
注释内容:
1.每个类、接口、字段和方法都编写概述
2.完整描述每个方法的签名
3.包含示例
4.为前置、后置、不变条件编写文档
5.为已知的缺陷和不足编写文档
6.为同步语法编写文档
内部注释:
1.仅添加有助于理解你的代码的内部注释
2.描写代码为什么这样做,而不是在做什么
3.避免使用行尾注释
4.用行尾注释解释局部变量声明
5.建立并使用一套关键词来标识尚未解决的问题
6.在嵌套程度高的控制结构中标记出嵌套结束位置
7.如果两个case标记之间没有break语句,就在中间加入“fall-through”注释
8.标记空语句
编程约定:
1.将表示基础数据类型的类声明为final类型
2.通过本地类型和其他具体类型建立具体类型
3.定义小的类和小的方法
4.定义子类,以便任何使用超类的地方都可以使用子类
5.使所有字段私有
6.使用多态来替代instanceof
类型安全:
1.以java.lang.Object包装通用类,提供静态类型检查
2.以类的形式封装枚举类型
3.尽量使用泛型
语句和表达式:
1.用等价的方法替换重复的、复杂的表达式
2.使用块语句代替控制流结构的表达式
3.使用括号明确操作顺序
4.在switch语句中的最后一个case体使用break语句
5.使用equals(),而不是==来检测对象的对等关系
构造:
1.构造状态有效的对象
2.不要从构造函数中调用非final方法
3.用嵌套的构造函数消除冗余代码
异常处理:
1.使用不受检查、运行时的异常来报告可能在程序逻辑中出错的严重未查明错误
2.使用检查异常来报告可能发生,而在正常的程序运行时极少发生的错误
3.用返回代码报告可预知的状态改变
4.仅转化异常来添加信息
5.不要私自处置运行时或者错误异常
6.用finally语句块释放资源
断言:
1.按照约定编程
2.用无用代码消除机制实现断言
3.用断言捕捉代码中的逻辑错误
4.用断言检测方法的前置条件和后置条件
并发:
1.仅在适当的地方使用线程
同步:
1.避免同步
2.用同步的包装器,提供同步接口
3.如果方法包含几个不需要同步的重要操作,那么不要同步整个方法
4.读写实例变量的时候避免不必要的同步
5.使用notify()而不是notifyAll()
6.为同步初始化使用双重检查模式
效率:
1.使用懒惰初始化
2.避免创建不必要的对象
3.重新初始化并重新使用对象,尽量不要新建对象
4.把优化工作留在日后
打包约定:
1.将经常使用、更改、同时发布或者互相依存的类型,放在同一个包里
2.共同封闭原则
3.重用/发布等价原则
4.无环依赖原则
5.将不稳定的类和接口隔离在单独的包中
6.易于修改的包不要依赖于难以修改的包
7.最大化抽象最大化稳定性
8.将高层设计和架构作为稳定的抽象,组织为稳定的包
以上仅是一些规则简单的罗列,推荐阅读此书。
Java编程风格的更多相关文章
- Google Java编程风格指南
出处:http://hawstein.com/posts/google-java-style.html 声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Comm ...
- Google Java编程风格指南中文版
作者:Hawstein出处:http://hawstein.com/posts/google-java-style.html声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Cre ...
- Java学习笔记(四)——google java编程风格指南(上)
[前面的话] 年后开始正式上班,计划着想做很多事情,但是总会有这样那样的打扰,不知道是自己要求太高还是自我的奋斗意识不够?接下来好好加油.好好学学技术,好好学习英语,好好学习做点自己喜欢的事情,趁着自 ...
- Java学习笔记(五)——google java编程风格指南(中)
[前面的话] 年后开始正式上班,计划着想做很多事情,但是总会有这样那样的打扰,不知道是自己要求太高还是自我的奋斗意识不够?接下来好好加油.好好学学技术,好好学习英语,好好学习做点自己喜欢的事情,趁着自 ...
- Java学习笔记(六)——google java编程风格指南(下)
[前面的话] 年后开始正式上班,计划着想做很多事情,但是总会有这样那样的打扰,不知道是自己要求太高还是自我的奋斗意识不够?接下来好好加油.好好学学技术,好好学习英语,好好学习做点自己喜欢的事情,趁着自 ...
- (转)google Java编程风格中文版
转:http://www.hawstein.com/posts/google-java-style.html 目录 前言 源文件基础 源文件结构 格式 命名约定 编程实践 Javadoc 后记 前言 ...
- Google的Java编程风格指南(Java编码规范)
这份文档是Google Java编程风格规范的完整定义.当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合Google的Java编程风格. 与其它的编程风格指南一样,这里所讨论的不仅仅是 ...
- Java编程风格学习(二)
二.格式规范 在上一篇的Java编程风格学习(一)中我们讲述了在Java编码中的一般原则,虽然这些原则并不涉及具体的代码规范,但是这些原则却是我们在Java开发过程中所应该遵循的规范与思想.今天我们将 ...
- Java编程风格学习(三)
在上一篇的java编程风格学习(二)中我们学习了一些在Java编码过程中的格式规范,遵循这些规范毋庸置疑是我们的书写高质量代码的前提与基础.今天我们更进一步,一起来学习Java编程的命名规范,向着编写 ...
- Google Java 编程风格指南 —— 见微知著
目录 前言 源文件基础 源文件结构 格式 命名约定 编程实践 Javadoc 后记 前言 这份文档是Google Java编程风格规范的完整定义.当且仅当一个Java源文件符合此文档中的规则, 我们才 ...
随机推荐
- Micro LED巨量转移技术研究进展
近年来,Micro LED因其功耗低.响应快.寿命长.光效率高等特点,被视为继LCD.OLED之后的新一代显示面板技术.Micro LED的英文全名是Micro Light Emitting Diod ...
- CentOS 桥接网卡配置
[root@controller ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0 DEVICE=br0 ONBOOT=yes TYPE=Bridge ...
- 牛客网PAT练兵场-D进制的A+B
题解:大多数做法是利用循环相除,取余.我是将将A+B传入f函数,利用递归实现D进制的输出 题目地址:https://www.nowcoder.com/questionTerminal/a2063993 ...
- v-html渲染富文本图片宽高问题
v-html渲染富文本v-html是用来渲染html的节点及字符串的,但是渲染后富文本里的图片宽高会溢出所在div的区域但是使用css直接给img是没有办法设置img的宽高的,需要使用深层级来给img ...
- DevOps系列(1)-总体架构
扯闲淡 在进入正式话题之前,先扯个淡,这算是第一篇我正式在博客上发布的随笔吧,之前也一直有想写点什么,将自己多年的工作经验分享出来,供大家参考点评,但是奈何一直对自己的文字功底不自信(其实也确实比较烂 ...
- Node.js小项目——学生信息管理系统
这是迄今为止第一次接触后端的东西,是一个很小的项目,但是对于前端学习入门很好.我是先学了VUE框架再学的Node,学起来比较轻松,不过每个人都有自己的学习方法️ 一.项目描述 学生信息管理系统,可以实 ...
- 跨站请求伪造(csrf)的防护手段
CSRF CSRF全拼为Cross Site Request Forgery,译为跨站请求伪造. CSRF指攻击者盗用了你的身份,以你的名义发送恶意请求. 造成的问题:个人隐私泄露以及财产安全. CS ...
- 【免费】windows下如何生成tar.gz,一键生成tar.gz
废话 一.实验背景 tar.gz 是Linux和Unix下面比较常用的格式,一条命令就可以把文件压缩打包成tar.gz格式,然而这种格式在windows并不多见. Linxu服务器上,tar.gz 包 ...
- eslint prettier vetur eslint
VScode (版本 1.47.3)安装 eslint prettier vetur 插件 .vue 文件使用 vetur 进行格式化 在文件 .prettierrc 里写 属于你的 pettier ...
- Oracle12C创建视图权限不足
授权: GRANT CREATE VIEW TO c##scott; 作者:彼岸舞 时间:2020\06\23 内容关于:Oracle 本文属于作者原创,未经允许,禁止转发