转载自 涨姿势 | 优秀 Java 程序员写代码的风格

今天突发奇想,对编码习惯和 编程风格 很感兴趣,于是乎,找了一下关于编程风格(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 程序员写代码的风格相关推荐

  1. 初学者成为优秀Java程序员的8个步骤

    经常会有人问小千,如何从一名零基础初学者成为一名优秀的Java程序员.其实,小千见证了很多人从一名初学者逐步成长为一名优秀的Java开发工程师,他们或多或少都具有一些特征.下面,小千就给大家分享成为优 ...

  2. py程序员写代码的习惯养成 防止想到什么写什么

    py程序员写代码的习惯养成 防止想到什么写什么 本例以一个爬虫项目为例 描述写代码的思路 架构注释 目标是明确:主线步骤 对起始页发起请求,获取数据根据获取的数据,构建请求url列表依次访问url列表 ...

  3. 程序员写代码的致命缺点

    Table of Contents 一.命名不规范 二.日志不规范 三.拒绝写接口和假数据 四.不写单元测试 五.先集成,再测试,再放弃. 六.理不清楚逻辑,边做边猜 七.不做方案 八.不关注性能 九 ...

  4. 成为优秀Java程序员的10大技巧

    来自:http://geek.csdn.net/news/detail/114500 Java程序员有许多应遵循的守则或最佳实践方式.本文概述了每个开发者最应该遵循的10条守则或戒律,如果不遵循它们, ...

  5. java程序员拜年代码_程序员的新年祝福是什么样的?

    2019就要到来了, 马上要收到各种形形色色的新年祝福, 尽管有一些简单真诚的祝福语, 不过大多是千篇一律的罐头短信. 程序员作为一群高智商群体 在这辞旧迎新的时刻 怎么能一直玩那些老掉牙的梗呢! 你 ...

  6. Java程序员编写代码的技巧

    这样说吧,系统学Java底层,是大多数Java初学者都会缴的智商税.为什么这样说呢? 1 初级开发做的是增删改查,没必要了解底层,了解了对开发帮助也不大. 2 中级开发要求的是熟悉业务,能排查大多数问 ...

  7. 程序员 笔记本 amd python_程序员写代码都用什么样的笔记本?

    程序员一般喜欢用thinkpad或者Mac,因为价位等方面的因素,还是用thinkpad多点,从事不同研发方向需要的计算机的配置也不太相同,现在开发软件要求的机器配置也和十几年不太一样,那个时候嵌入式 ...

  8. 优秀Java程序员应该了解的GC工作原理

    一个优秀的Java程序员必须了解GC的工作原理.如何优化GC的性能.如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统.实时系统等,只有全面提升内存的管理效率 ,才能提高整个应 ...

  9. 优秀程序员写代码一定会用的 11 条经验

    这是一篇值得收藏起来,隔三差五就拿来重读的文章!因为作者向你保证,他"遇到的所有糟糕的代码,都是因为没采纳这些实践经验.而任何一段优秀的代码,都采纳了至少部分实践经验." 还等什么 ...

最新文章

  1. 给你的开源项目加一个绶带吧
  2. //某父元素(.class)底下相同class的第二的取值
  3. php jira,php – 为Jira的api添加附件
  4. 浙江理工大学2019年4月赛
  5. python3.8安装xlwings出错_Python xlwings模块简单使用
  6. SGCheck:一个实验堆栈和全局数组溢出检测器
  7. 计算机表格怎么加减乘除,如何在Word表格中进行加减乘除
  8. 数据库 memorial
  9. (转)《精通比特币》原码分析: rpc_block
  10. 图像处理之matlab中fspecial函数用法详解
  11. office之转置EXCEL表格
  12. excel 按照范围替换
  13. 大数据技术基础实验十三:Kafka实验——订阅推送示例
  14. QPainter、QPen、QBrush,绘图、填充、渐变等使用方法
  15. Windows Ubuntu 子系统修改默认登陆用户·
  16. AFEPack 使用 Tutorial(一):解二维泊松方程
  17. Java6、7章总结复习
  18. 2016校招offer
  19. 邮币卡如何“做局”? 高回报诱惑下的陷阱
  20. Python+Flask(1)--AmazeUI后台管理开发框架

热门文章

  1. [C++11]基于范围的for循环
  2. 高等数学上-赵立军-北京大学出版社-题解-练习5.5
  3. Strategy(策略)--对象行为型模式
  4. #6229. 这是一道简单的数学题(反演 + 杜教筛)
  5. 数字(进制/二分/组合数学)
  6. nowcoder Forsaken的数列 fhq-treap
  7. CodeForces 1191A---Tokitsukaze and Enhancement
  8. YBTOJ洛谷P4068:数字配对(网络流)
  9. P5044-[IOI2018] meetings 会议【dp,笛卡尔树,线段树二分】
  10. P2012-拯救世界2【EGF】