优秀 Java 程序员写代码的风格

简介: 优秀 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.关键字,标识符和常量应放到…标签中


3.将代码放入

image.png标签中

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.将高层设计和架构作为稳定的抽象,组织为稳定的包


以上仅是一些规则简单的罗列,推荐阅读此书。


推荐去我的博客阅读更多:


1.Java JVM、集合、多线程、新特性系列教程


2.Spring MVC、Spring Boot、Spring Cloud 系列教程


3.Maven、Git、Eclipse、Intellij IDEA 系列工具教程


4.Java、后端、架构、阿里巴巴等大厂最新面试题


觉得不错,别忘了点赞+转发哦!


image.png

相关文章
|
6天前
|
人工智能 Java 程序员
【AI程序员】通义灵码 AI 程序员全面上线JAVA使用体验
通过 AI 程序编写一个JAVA后台项目登陆页面
190 17
|
8天前
|
JavaScript NoSQL Java
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
152 96
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
|
1月前
|
SQL Java 数据库连接
如何在 Java 代码中使用 JSqlParser 解析复杂的 SQL 语句?
大家好,我是 V 哥。JSqlParser 是一个用于解析 SQL 语句的 Java 库,可将 SQL 解析为 Java 对象树,支持多种 SQL 类型(如 `SELECT`、`INSERT` 等)。它适用于 SQL 分析、修改、生成和验证等场景。通过 Maven 或 Gradle 安装后,可以方便地在 Java 代码中使用。
272 11
|
1月前
|
JSON Java 数据挖掘
利用 Java 代码获取淘宝关键字 API 接口
在数字化商业时代,精准把握市场动态与消费者需求是企业成功的关键。淘宝作为中国最大的电商平台之一,其海量数据中蕴含丰富的商业洞察。本文介绍如何通过Java代码高效、合规地获取淘宝关键字API接口数据,帮助商家优化产品布局、制定营销策略。主要内容包括: 1. **淘宝关键字API的价值**:洞察用户需求、优化产品标题与详情、制定营销策略。 2. **获取API接口的步骤**:注册账号、申请权限、搭建Java开发环境、编写调用代码、解析响应数据。 3. **注意事项**:遵守法律法规与平台规则,处理API调用限制。 通过这些步骤,商家可以在激烈的市场竞争中脱颖而出。
|
2月前
|
安全 Java 编译器
深入理解Java中synchronized三种使用方式:助您写出线程安全的代码
`synchronized` 是 Java 中的关键字,用于实现线程同步,确保多个线程互斥访问共享资源。它通过内置的监视器锁机制,防止多个线程同时执行被 `synchronized` 修饰的方法或代码块。`synchronized` 可以修饰非静态方法、静态方法和代码块,分别锁定实例对象、类对象或指定的对象。其底层原理基于 JVM 的指令和对象的监视器,JDK 1.6 后引入了偏向锁、轻量级锁等优化措施,提高了性能。
77 3
|
2月前
|
前端开发 Java 测试技术
java日常开发中如何写出优雅的好维护的代码
代码可读性太差,实际是给团队后续开发中埋坑,优化在平时,没有那个团队会说我专门给你一个月来优化之前的代码,所以在日常开发中就要多注意可读性问题,不要写出几天之后自己都看不懂的代码。
78 2
|
2月前
|
安全 Java API
Java中的Lambda表达式:简化代码的现代魔法
在Java 8的发布中,Lambda表达式的引入无疑是一场编程范式的革命。它不仅让代码变得更加简洁,还使得函数式编程在Java中成为可能。本文将深入探讨Lambda表达式如何改变我们编写和维护Java代码的方式,以及它是如何提升我们编码效率的。
|
2月前
|
Java 编译器 数据库
Java 中的注解(Annotations):代码中的 “元数据” 魔法
Java注解是代码中的“元数据”标签,不直接参与业务逻辑,但在编译或运行时提供重要信息。本文介绍了注解的基础语法、内置注解的应用场景,以及如何自定义注解和结合AOP技术实现方法执行日志记录,展示了注解在提升代码质量、简化开发流程和增强程序功能方面的强大作用。
142 5
|
2月前
|
存储 算法 Java
Java 内存管理与优化:掌控堆与栈,雕琢高效代码
Java内存管理与优化是提升程序性能的关键。掌握堆与栈的运作机制,学习如何有效管理内存资源,雕琢出更加高效的代码,是每个Java开发者必备的技能。
94 5
|
3月前
|
Java API 开发者
Java中的Lambda表达式:简洁代码的利器####
本文探讨了Java中Lambda表达式的概念、用途及其在简化代码和提高开发效率方面的显著作用。通过具体实例,展示了Lambda表达式如何在Java 8及更高版本中替代传统的匿名内部类,使代码更加简洁易读。文章还简要介绍了Lambda表达式的语法和常见用法,帮助开发者更好地理解和应用这一强大的工具。 ####