前言

一种工具被发明出来,那么针对这种工具的各种使用规则、条条框框就随之而来。无规矩不成方圆,无制度则无国家,无风格不成代码!治国有国法、排兵布阵有章法、那么写代码也有它界内通用的不成俗的约定。最近刚好在看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代码规范笔记的更多相关文章

  1. 《码处高效:Java开发手册》之代码风格

    流水淡,碧天长,鸿雁成行.编码风格,简捷清爽,反引无限风光. 在美剧<硅谷>中有这样一个经典镜头,主人公 Richard 与同为开发工程师的女友闹分手,理由是两人对缩进方式有着截然不同的编 ...

  2. 阿里巴巴Java开发手册及Java代码规约扫描eclipse和IDEA插件

    <阿里巴巴Java开发手册>: https://github.com/alibaba/p3c/blob/master/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B ...

  3. 阿里巴巴Java开发手册及Java代码规约扫描eclipse插件

    一.github地址: https://github.com/alibaba/p3c 二..eclipse插件的安装 此处示例采用eclipse,版本为 Neon.1 Release RC3 (4.6 ...

  4. 码出高效,阿里巴巴JAVA开发手册1.4.0

    码出高效,阿里巴巴JAVA开发手册1.4.0阅读笔记 一.编程规约(三) 代码格式// 关键词if与括号之间必须有一个空格,括号内的f与左括号,0与右括号不需要空格 if (flag == 0) { ...

  5. 阿里官方Java代码规范标准《阿里巴巴Java开发手册 终极版 v1.3.0》

    终极版 v1.3.0 2017年开春之际,阿里诚意献上重磅大礼:<阿里巴巴Java开发手册>,首次公开阿里官方Java代码规范标准.这套Java统一规范标准将有助于提高行业编码规范化水平, ...

  6. 阿里官方Java代码规范标准《阿里巴巴Java开发手册》下载

    https://bbs.aliyun.com/read/306592.html?page=e 2017年开春之际,诚意献上重磅大礼:阿里巴巴Java开发手册,首次公开阿里官方Java代码规范标准. 这 ...

  7. 阿里巴巴Java开发手册正确学习姿势是怎样的?刷新代码规范认知

    很多人都知道,阿里巴巴在2017发布了<阿里巴巴Java开发手册>,前后推出了很多个版本,并在后续推出了与之配套的IDEA插件和书籍. 相信很多Java开发都或多或少看过这份手册,这份手册 ...

  8. IntelliJ IDEA 插件 阿里巴巴Java开发手册(Alibaba Java Coding Guidelines)

    以前看到过个:Java开发手册(阿里巴巴-公开版),这是个pdf文档,里面描述了一些Java开发的规约,里面确实有很多好用的规约,要是在学校就有机会看看的话,那么,在毕业之后,实际工作中就会少很多坑. ...

  9. 【Java编码规范】《阿里巴巴Java开发手册(正式版)》【转载】

    2017年开春之际,诚意献上重磅大礼:阿里巴巴Java开发手册,首次公开阿里官方Java代码规范标准.这套Java统一规范标准将有助于提高行业编码规范化水平,帮助行业人员提高开发质量和效率.大大降低代 ...

  10. 《阿里巴巴Java开发手册》代码格式部分应用——idea中checkstyle的使用教程

    <阿里巴巴Java开发手册>代码格式部分应用--idea中checkstyle的使用教程 1.<阿里巴巴Java开发手册> 这是阿里巴巴工程师送给各位软件工程师的宝典,就像开车 ...

随机推荐

  1. 解决ftp登录问题:500 OOPS: cannot change directory:/home/xxx 500 OOPS: child died

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...

  2. Flink EOS如何防止外部系统乱入--两阶段提交源码

    一.前言 根据维基百科的定义,两阶段提交(Two-phase Commit,简称2PC)是巨人们用来解决分布式系统架构下的所有节点在进行事务提交时保持一致性问题而设计的一种算法,也可称之为协议. 在F ...

  3. 【网络编程】TCPIP_1_快速入门

    目录 前言 1. 快速入门 1.1 服务端编程简要步骤 1.2 客户端编程简要步骤 1.3 参考 前言 说明: demo 基于 Linux. 1. 快速入门 以下步骤简略了很多细节,但是通过下面的几个 ...

  4. elsa-core—2.Hello World: HTTP

    在本快速入门中,我们将了解一个执行工作流的最小 ASP.NET Core 应用程序.工作流将侦听传入的 HTTP 请求并写回一个简单的响应. 我们将: 创建 ASP.NET Core 应用程序. 使用 ...

  5. 《微服务架构设计模式》读书笔记 | 第4章 使用Saga管理事务

    目录 前言 1. 微服务架构下的事务管理 1.1 分布式事务的挑战 1.2 一个Saga的示例 1.3 Saga使用补偿事务来回滚所作出的改变 2. Saga的协调模式 2.1 两种Saga协调模式 ...

  6. 超硬核 Web 前端学霸笔记,学完就去找工作!

    文章和教程 Vue 学习笔记 Node 学习笔记 React 学习笔记 Angular 学习笔记 RequireJS 学习笔记 Webpack 学习笔记 Gulp 学习笔记 Python 学习笔记 E ...

  7. 官宣 .NET 6 预览版 6

    我们很高兴宣布.NET 6 预览版6问世啦.预览版6 是我们RC版发布之前的倒数第二个预览版. 我们将有两个RC版. 此版本本身相对较小,而预览版7会更大. 在那之后,我们将进行质量修复,直到11 月 ...

  8. 百度地图开发-引入地图SDK并配置 02

    百度地图开发-引入地图SDK并配置 02 通过上一篇文章的介绍,基本了解百度地图的基本信息,接下来就让我们一起来实际在项目中操作,显示出地图. 01 引入地图SDK 首先需要新建一个空白的Androi ...

  9. UDP与TCP的对比

    参考网址:https://blog.csdn.net/m0_38121874/article/details/82914634 1.报头(1)TCP协议报头TCP指传输控制协议,其报头格式如下: TC ...

  10. 关于 java编程思想第五版 《On Java 8》

    On Java 8中文版 英雄召集令 这是该项目的GITHUB地址:https://github.com/LingCoder/OnJava8 广招天下英雄,为开源奉献!让我们一起来完成这本书的翻译吧! ...