Alibaba《Java开发手册》之Java代码规范笔记
前言
一种工具被发明出来,那么针对这种工具的各种使用规则、条条框框就随之而来。无规矩不成方圆,无制度则无国家,无风格不成代码!治国有国法、排兵布阵有章法、那么写代码也有它界内通用的不成俗的约定。最近刚好在看alibabaJava开发手册,只听说是业界内通用的Java代码规范小红书。这不也刚转入Java的阵营,怎的也不能落人之后啊。树要皮,人要脸,程序员的脸不就你写的那一手老代码嘛!!此书分为好几大块,我没有读完,但只针对基本Java代码规范做了阅读,然好记性不如烂笔头,遂以本文以录之。
命名风格
类、接口
- 统一采用 UpperCamelCase风格
// 正确的命名
class People {}
// 错误的命名
class people {}
- 抽象类
// 以```Abstract```或者```Base```命令开头
// 正确的命名
abstract class AbstractPeople {}
//错误的命名
abstract class People {}
- Service接口
// 命名应当以 Service结尾
// 正确的
interface OrderService {}
// 错误的
interface OrderServiceInterface {}
- 实现类接口
// 实现接口应当以 impl 结尾
// 正确的
class OrderServiceImpl {}
// 错误的
// 非以Impl结尾的类名
- Enum类
// enum类使用 enum结尾
// 正确的
enum OrderStatusEnum {}
- 异常类
// 以Exception结尾
// 正确的
class ParseTextException {}
- Test类
// 正确的
class OrderServiceTest {}
- 工具类
// 工作类那么以Utils结尾
// 正确
class MoneyUtils {}
- 数据传输对象(DTO)
分层设计的时候,通常有一个类来负责传递数据,从Controller通过转化传递到Service 或者 从Service传递到Spi,或者用以不同模板的数据传递。那么这种对象称之为DTO(Data Transfer Object)
// 命名方式以DTO结尾
// 必须实现 Serializable 接口
class UserInfoDTO implements Serializable {
// 必须有 定义 serialVersionUID
private static final long serialVersionUID = 8300693945573325343L;
//getter setter 必须有
// 必须有 toString方法
public void toString() {
}
}
- 复杂聚合对象(BO)
有些业务场景十分的复杂,要用一个对象来聚合其他几个对象,来形成一个业务对象。比如订单商品BO,在这个BO里 既要有商品的信息、也要有活动的信息。那么这种对象可以称之为BO(Business Object)
// 命名方式以BO结尾
// 必须实现 Serializable 接口
class OrderComputeBO implements Serializable {
// 必须有 定义 serialVersionUID
private static final long serialVersionUID = 8300693945573325343L;
//getter setter 必须有
// 必须有 toString方法
public void toString() {
}
}
- 接口输出VO
通常以用Api返回的数据结构,以VO结尾来命令(Value Object)
// 命名方式以VO结尾
// 必须实现 Serializable 接口
class GoodsInfoVO implements Serializable {
// 必须有 定义 serialVersionUID
private static final long serialVersionUID = 8300693945573325343L;
//getter setter 必须有
// 必须有 toString方法
public void toString() {
}
}
常量
定义一个常量、几乎所有语言潜移默化都是大写,带下划线、每个单词用下划线分开,表达清楚,见词明意。
// 下面是一个用于定义默认的分享开头
private static final int DEFAULT_SHARE_SWITCH = 1
变量、方法、参数
这个国际通用、一律采用的是lowerCamelCase
的命名规则、尽量的表达出意思。
/**
* 1:方法以动词开始、表示某个行为,,见名明意
* 2:方法内参数用 ","隔开,每个后面有一个空格
*/
public String getUserBaseInfo(String name, int age) {
String baseInfo = name + age;
return baseInfo;
}
包名
- 统一使用小写、用点号分隔、使用单数
代码格式
缩进
- 采用 4 个空格缩进,禁止使用 Tab 字符。
注释
- 注释的双斜线与注释内容之间有且仅有一个空格。
- 类上的注释要表明作者、和日期
- 方法上面要注释要表明各参数的意义、以前方法的说明
/**
*@author Savey
*@date 2016/10/31
*/
class People {
/**
* 功能:吃某种食物
* @params food 食物
*/
pulic void eat(Food food) {
// 方法体内 单行 用 // 注释
/*
* 多行使用\/**\/ 注释说明
*/
food.getName();
}
}
代码块
一行不能超过120个字符
- 第二行相对第一行缩进 4 个空格,从第三行开始,不再继续缩进
- 运算符与下文一起换行
- 法调用的点符号与下文一起换行
- 方法调用中的多个参数需要换行时,在逗号后进行。
- 在括号前不要换
方法入参数要有空格分开
单个方法的总行数不超过 80 行
其他
禁止:有反人伦、道德、地域歧视、种族歧视、性别歧视等一切违背社会主次核心价格观的观点或者描述性文字出现在代码里
上面为普通Java代码的编写规范,条条框框还是很多的,方方面面都说到了。下次再补充Mybatis、Sql、等规范!
Alibaba《Java开发手册》之Java代码规范笔记的更多相关文章
- 《码处高效:Java开发手册》之代码风格
流水淡,碧天长,鸿雁成行.编码风格,简捷清爽,反引无限风光. 在美剧<硅谷>中有这样一个经典镜头,主人公 Richard 与同为开发工程师的女友闹分手,理由是两人对缩进方式有着截然不同的编 ...
- 阿里巴巴Java开发手册及Java代码规约扫描eclipse和IDEA插件
<阿里巴巴Java开发手册>: https://github.com/alibaba/p3c/blob/master/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B ...
- 阿里巴巴Java开发手册及Java代码规约扫描eclipse插件
一.github地址: https://github.com/alibaba/p3c 二..eclipse插件的安装 此处示例采用eclipse,版本为 Neon.1 Release RC3 (4.6 ...
- 码出高效,阿里巴巴JAVA开发手册1.4.0
码出高效,阿里巴巴JAVA开发手册1.4.0阅读笔记 一.编程规约(三) 代码格式// 关键词if与括号之间必须有一个空格,括号内的f与左括号,0与右括号不需要空格 if (flag == 0) { ...
- 阿里官方Java代码规范标准《阿里巴巴Java开发手册 终极版 v1.3.0》
终极版 v1.3.0 2017年开春之际,阿里诚意献上重磅大礼:<阿里巴巴Java开发手册>,首次公开阿里官方Java代码规范标准.这套Java统一规范标准将有助于提高行业编码规范化水平, ...
- 阿里官方Java代码规范标准《阿里巴巴Java开发手册》下载
https://bbs.aliyun.com/read/306592.html?page=e 2017年开春之际,诚意献上重磅大礼:阿里巴巴Java开发手册,首次公开阿里官方Java代码规范标准. 这 ...
- 阿里巴巴Java开发手册正确学习姿势是怎样的?刷新代码规范认知
很多人都知道,阿里巴巴在2017发布了<阿里巴巴Java开发手册>,前后推出了很多个版本,并在后续推出了与之配套的IDEA插件和书籍. 相信很多Java开发都或多或少看过这份手册,这份手册 ...
- IntelliJ IDEA 插件 阿里巴巴Java开发手册(Alibaba Java Coding Guidelines)
以前看到过个:Java开发手册(阿里巴巴-公开版),这是个pdf文档,里面描述了一些Java开发的规约,里面确实有很多好用的规约,要是在学校就有机会看看的话,那么,在毕业之后,实际工作中就会少很多坑. ...
- 【Java编码规范】《阿里巴巴Java开发手册(正式版)》【转载】
2017年开春之际,诚意献上重磅大礼:阿里巴巴Java开发手册,首次公开阿里官方Java代码规范标准.这套Java统一规范标准将有助于提高行业编码规范化水平,帮助行业人员提高开发质量和效率.大大降低代 ...
- 《阿里巴巴Java开发手册》代码格式部分应用——idea中checkstyle的使用教程
<阿里巴巴Java开发手册>代码格式部分应用--idea中checkstyle的使用教程 1.<阿里巴巴Java开发手册> 这是阿里巴巴工程师送给各位软件工程师的宝典,就像开车 ...
随机推荐
- 9419页最新一线互联网Android面试题解析大全
网上高级工程师面试相关文章鱼龙混杂,要么一堆内容,要么内容质量太浅, 鉴于此我整理了如下安卓开发高级工程师面试题以及答案帮助大家顺利进阶,下面进入正题: 一.Android相关 1.Activity ...
- 被字节跳动、小米、美团面试官问的AndroidFramework难倒了? 这里有23道面试真题,助力成为offer收割机!
目录 1.Android中多进程通信的方式有哪些?a.进程通信你用过哪些?原理是什么?(字节跳动.小米)2.描述下Binder机制原理?(东方头条)3.Binder线程池的工作过程是什么样?(东方头条 ...
- IOC(概念和原理)
什么是 IOC (1)控制反转,把对象创建和对象之间的调用过程,交给 Spring 进行管理 (2)使用 IOC 目的:为了耦合度降低 (3)做入门案例就是 IOC 实现 IOC 底层原理 xml 解 ...
- Install Fabric 1.8.3 Manually on Ubuntu 12.04
When you install Fabric with apt-get install fabric, you get a fabric with version 1.3.x, which is t ...
- Linux应用程序安装方法
一.linux应用程序基础 1.1.应用程序与系统命令的关系 1.2.典型应用程序的目录结构 1.3.常见的软件包封装类型 二.RPM包管理工具 2.1.RPM软件包管理器Red-Hat Packag ...
- Android消息机制1-Handler(Java层)
一.概述 在整个Android的源码世界里,有两大利剑,其一是Binder IPC机制,,另一个便是消息机制(由Handler/Looper/MessageQueue等构成的). Android有大量 ...
- MySQL记录之间是单向链表还是双向链表?
前言 本文的观点是基于MySQL使用Innodb存储引擎的情况下进行的! 很多渠道说:MySQL数据按照主键大小依次排列,记录之间是双向链表连起来.如果说我告诉你这种说法很大程度上是错的,你肯定说我在 ...
- 浅谈 SQL 注入(注入篇)
一.SQL注入简介 1.1 什么是SQL注入 在用户可控制的参数上过滤不严或没有任何限制,使得用户将传入的参数(如URL,表单,http header)与SQL语句合并构成一条 SQL语句传递给web ...
- 依赖注入@Autowired@Primary@Quelifier使用
@Autowired 注入声明的SpringBean对象,根据一定的规则首先按照注入的类型去查找,如果没有找到安装注入的名称去匹配你要注入的属性名称,如果都没有找到启动项目时抛出异常,@Autowir ...
- 并发容器之ConcurrentHashMap(转载)
Java并发编程:并发容器之ConcurrentHashMap(转载) 下面这部分内容转载自: http://www.haogongju.net/art/2350374 1.7与1.8有很大的区别:h ...