阿里巴巴java规范--观后整理

阿里巴巴编码规范习题 因为工作需要,公司组里要求考阿里巴巴编程规范,于是我花了一天的时间看了一遍,然后刷了一些题,终于在第三次的时候考过了。考试是基于《阿里巴巴Java开发手册》,一共50道题目,包括多选和单选,题目都是选择题。目前阿里云编程规范是出到V1.5.0华山版了,好的代码规范能减少很多不必要的问题。 《阿里巴巴Java开发手册》分为:编程规约、异常日志、单元测试、安全规约、MySql数据库规约、工程结构和设计规约七个维度。内容很多,分类也很细致,每条规约都写得很详细,略微复杂的规约会做说明解释。考试难度不大,... 阅读详情

一、编程规约 
(一)命名规约 

9. 【强制】包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用
单数形式,但是类名如果有复数含义,类名可以使用复数形式。
正例: 应用工具类包名为 com.alibaba.open.util、类名为 MessageUtils(此规则参考
spring 的框架结构)

10. 【强制】杜绝完全不规范的缩写,避免望文不知义。
反例: AbstractClass“缩写”命名成 AbsClass;condition“缩写”命名成 condi,此类
随意缩写严重降低了代码的可阅读性。

(四)OOP 规约  ------*****最重要*****-------

15. 【参考】各层命名规约:
A) Service/DAO 层方法命名规约
1) 获取单个对象的方法用 get 做前缀。
2) 获取多个对象的方法用 list 做前缀。
3) 获取统计值的方法用 count 做前缀。
4) 插入的方法用 save(推荐)或 insert 做前缀。
5) 删除的方法用 remove(推荐)或 delete 做前缀。
6) 修改的方法用 update 做前缀。
B) 领域模型命名规约
1) 数据对象:xxxDO,xxx 即为数据表名。
2) 数据传输对象:xxxDTO,xxx 为业务领域相关的名称。
3) 展示对象:xxxVO,xxx 一般为网页名称。
4) POJO 是 DO/DTO/BO/VO 的统称,禁止命名成 xxxPOJO。

19. 【推荐】慎用 Object 的 clone 方法来拷贝对象。
说明:对象的 clone 方法默认是浅拷贝,若想实现深拷贝需要重写 clone 方法实现属性对象
的拷贝。


(五)集合处理 

5. 【强制】使用工具类 Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方
法,它的 add/remove/clear 方法会抛出 UnsupportedOperationException 异常。
说明:asList 的返回对象是一个 Arrays 内部类,并没有实现集合的修改方法。Arrays.asList
体现的是适配器模式,只是转换接口,后台的数据仍是数组。
 String[] str = new String[] { "a", "b" };
 List list = Arrays.asList(str);
第一种情况:list.add("c"); 运行时异常。
第二种情况:str[0]= "gujin"; 那么 list.get(0)也会随之修改。


(七)控制语句 

3. 【推荐】推荐尽量少用 else, if-else 的方式可以改写成:
if(condition){
 ...
 return obj;
}
// 接着写 else 的业务逻辑代码;
说明:如果非得使用 if()...else if()...else...方式表达逻辑,【强制】请勿超过 3 层,
超过请使用状态设计模式。
正例:逻辑上超过 3 层的 if-else 代码可以使用卫语句,或者状态模式来实现。


(八)注释规约 


11. 【参考】特殊注释标记,请注明标记人与标记时间。注意及时处理这些标记,通过标记扫描,
经常清理此类标记。线上故障有时候就是来源于这些标记处的代码。
1) 待办事宜(TODO):( 标记人,标记时间,[预计处理时间])
表示需要实现,但目前还未实现的功能。这实际上是一个 Javadoc 的标签,目前的 Javadoc
还没有实现,但已经被广泛使用。只能应用于类,接口和方法(因为它是一个 Javadoc 标签)。
2) 错误,不能工作(FIXME):(标记人,标记时间,[预计处理时间])
在注释中用 FIXME 标记某代码是错误的,而且不能工作,需要及时纠

(九)其它 

5. 【强制】获取当前毫秒数 System.currentTimeMillis(); 而不是 new Date().getTime();
说明:如果想获取更加精确的纳秒级时间值,用 System.nanoTime()。在 JDK8 中,针对统计
时间等场景,推荐使用 Instant 类。

8. 【推荐】对于“明确停止使用的代码和配置”,如方法、变量、类、配置文件、动态配置属性
等要坚决从程序中清理出去,避免造成过多垃圾。

二、异常日志 
(二)日志规约 

4. 【强制】对 trace/debug/info 级别的日志输出,必须使用条件输出形式或者使用占位符的方
式。
说明:logger.debug("Processing trade with id: " + id + " symbol: " + symbol);
如果日志级别是 warn,上述日志不会打印,但是会执行字符串拼接操作,如果 symbol 是对象,
会执行 toString()方法,浪费了系统资源,执行了上述操作,最终日志却没有打印。
正例:(条件)
if (logger.isDebugEnabled()) {
logger.debug("Processing trade with id: " + id + " symbol: " + symbol);
}
正例:(占位符)
logger.debug("Processing trade with id: {} symbol : {} ", id, symbol); 


三、MySQL 规约
(一)建表规约 

14. 【推荐】单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表。
说明:如果预计三年后的数据量根本达不到这个级别,请不要在创建表时就分库分表。


四、工程规约
(一)应用分层 

3. 【参考】分层领域模型规约:
 DO(Data Object):与数据库表结构一一对应,通过 DAO 层向上传输数据源对象。
 DTO(Data Transfer Object):数据传输对象,Service 和 Manager 向外传输的对象。
 BO(Business Object):业务对象。可以由 Service 层输出的封装业务逻辑的对象。
 QUERY:数据查询对象,各层接收上层的查询请求。注:超过 2 个参数的查询封装,禁止
使用 Map 类来传输。
 VO(View Object):显示层对象,通常是 Web 向模板渲染引擎层传输的对象。 

阿里巴巴和谷歌Java代码规范手册 无规矩不成方圆,编码规范就如同协议,有了Http、TCP等各种协议,计算机之间才能有效地通信,同样的,有了一致的编码规范,程序员之间才能有效地合作。道理大家都懂,可现实中的我们,经常一边吐槽别人的代码,一边写着被吐槽的代码,究其根本,就是缺乏遵从编码规范的意识!多年前,Google发布Google Java Style来定义Java编码时应遵循的规范;今年年初阿里则发布阿里巴巴Java 开发手册,并随后迭代了多个版本,直至9月份又发布了pdf终极版。这两大互联网巨头的初衷,都是希望能够统一标准,使业界编码达 阅读详情

相关推荐

阿里巴巴Java开发编程规约(整理详细版)

对软件来说,适当的 规范和标准绝不是消灭代码内容的创造性、优雅性,而是限制过度个性化,以一种普遍认可的统一 方式一起做事,提升协作效率,降低沟通成本。代码的字里行间流淌的是软件系统的血液,代码质 量的提升是尽可能少踩坑,杜绝踩重复的坑,切实提升系统稳定性,码出质量。

夜飞鼠的专栏 4857

项目架构规范:阿里规约,MVC架构以及三层架构(三)

封装是面向对象的的第一大特性,属性私有化,根据提供的setter和getter方法来访问属性,隐藏具体属性和实现细节。 @Data public class UserInfoDomain { private String name; private String IDCard; } 行为变成简单的setter/getter方法了,一个UserInfo其实有很多行为,例如:新增、手机号是否黑名单、IDCard是否合法等,但是这些行为代码就写满了service方法。 领域模型定义为【结..

lin451791119的博客 723

阿里巴巴Java代码规范完整指南与实践

常量(Constant)是指在程序运行期间值不会发生变化的数据。Java中通常使用修饰符来定义常量,它们通常被放置在专门的常量类中,以提升代码的组织性和可复用性。

weixin_36213081的博客 780

阿里面试官:小伙子,你给我说一下你们前后端分离的接口规范是什么?

1. 前言 随着互联网的高速发展,前端页面的展示、交互体验越来越灵活、炫丽,响应体验也要求越来越高,后端服务的高并发、高可用、高性能、高扩展等特性的要求也愈加苛刻,从而导致前后端研发各自专注于自己擅长的领域深耕细作。 然而带来的另一个问题:前后端的对接界面双方却关注甚少,没有任何接口约定规范情况下各自撸起袖子就是干,导致我们在产品项目开发过程中,前后端的接口联调对接 工作量占比在30%-50%左右,甚至会更高。往往前后端接口联调对接及系统间的联调对接都是整个产品项目研发的软肋。 本文的主要初衷就是规范

webqianduan1的博客 750

多标签分类怎么做?(Python)

首先简单介绍下,多标签分类与多分类、多任务学习的关系: 多分类学习(Multi-class):分类器去划分的类别是多个的,但对于每一个样本只能有一个类别,类别间是互斥的。例如:分类器判断这只动物是猫、狗、猪,每个样本只能有一种类别,就是一个三分类任务。常用的做法是OVR、softmax多分类

y1282037271的博客 1360

针对so层不固定位置的动态加密,怎么解决?(面试题)

Android逆向之破解某应用加密算法(动态调试so和hook so代码):so 代码动态解密后才执行,我们可以在解密完成后获取解密后的代码或数据。Android逆向之旅—动态方式破解apk进阶篇(IDA调试so源码)如果你有更具体的加密场景,欢迎提供更多信息,我可以给出更详细的方案!某些 so 在运行时生成密钥,解密后再用。某APP密码加密算法分析。

SXXYNHHXX的博客 928

看完阿里的代码规范,立马学会代码分层,再也不会被同事怼

代码规范重要吗?很重要很重要,整洁的代码能让你和同事都心旷神怡,也能让你在离职的时候不会被骂.....今天就来讲讲优秀IT人的代码都是如何分层的。 一、背景 说起应用分层,大部分人都会认为这个不是很简单嘛 就controller,service, mapper三层。 看起来简单,很多人其实并没有把他们职责划分开,在很多代码中,controller做的逻辑比service还多,service往往当成透传了,这其实是很多人开发代码都没有注意到的地方,反正功能也能用,至于放哪无所谓呗。这样往往造成后面代码无

Leo的博客 2965

解忧杂货铺(四):Hightec生成HEX方法+小功能开启

Hightec使用的一些常用技能

梦想技术家 2162

控制器(Controller)规范

控制器(Controller)规范

qq_39126966的博客 1462

LIO-SAM运行报错‘process has died’?别慌,一个命令搞定libmetis.so库路径问题

本文详细解析了LIO-SAM运行中常见的‘process has died’报错问题,特别是由libmetis.so库路径错误导致的节点崩溃。通过一个简单的命令移动库文件到正确位置,即可快速解决这一问题,同时提供了多种替代方案和预防措施,帮助开发者更好地理解Linux动态库加载机制和ROS环境管理。

weixin_29231221的博客 206

EDSR-PyTorch实战:从模型下载到超分辨率图像生成

本文详细介绍了如何使用PyTorch实现EDSR模型进行超分辨率图像生成,包括环境配置、模型下载、参数调优及常见问题解决方案。EDSR作为超分辨率重建的利器,通过深度残差网络显著提升图像质量,特别适合老照片修复等场景。文章还提供了视频处理和自定义训练的进阶技巧,帮助开发者快速掌握这一技术。

weixin_29046035的博客 462

API 增删改查命名规范

API 增删改查命名规范

堕落天使的博客 2143

国产安路FPGA(二)-TD软件时序约束与硬件调试实战

本文深入探讨了国产安路FPGA开发中TD软件时序约束的实战应用。文章详细解析了SDC文件的核心语法,包括基础时钟、生成时钟及输入输出延迟约束的编写方法,并针对硬件调试中常见的时序问题提供了解决方案。通过一个图像处理流水线的优化案例,阐述了如何结合代码修改与约束设置,实现设计从“能跑”到“跑得稳”的关键提升,是掌握FPGA可靠设计的实用指南。

weixin_29183637的博客 380

阿里巴巴开发规范

一、编程规范 1.1、命名风格 (1)不能以下划线或者美元符号开始和结束; (2)不能使用拼音和英文混合方式,不能直接中文方式; (3)类名使用UpperCamelCase风格,但是DO/BO/DTO/VO/AO/PO/UID除外: 正解:MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion 反例:macroPolo / ...

RuiKe的博客 2万+

081、空间降噪(Spatial Denoise)实战:双边滤波、非局部均值与BM3D在ISP中的调优

调参时,别只看PSNR/SSIM。找几个典型场景(夜景、人像、文字、天空),在真实设备上肉眼对比。我见过PSNR涨了2dB但图像看起来更差的案例——因为PSNR不惩罚纹理丢失。空间降噪这块,理论说再多,不如动手调一次。下次遇到噪点问题,先别急着上BM3D,试试双边滤波的自适应参数,说不定有惊喜。

zzfmlxs的博客 47

<PLC><汇川>汇川PLC基于EtherCat协议使用转矩模式控制SV630N伺服驱动电机

本系列是关于PLC相关的博文,包括PLC编程、PLC与上位机通讯、PLC与下位驱动、仪器仪表等通讯、PLC指令解析等相关内容。PLC品牌包括但不限于西门子、三菱等国外品牌,汇川、信捷等国内品牌。除了PLC为主要内容外,PLC相关元器件如触摸屏(HMI)、交换机等工控产品,如果有值得记录的内容,也会添加进来。

用沸腾的热血,支付我们的人生吧! 4165

Java编码规范(参考阿里巴巴开发手册)

本文主要介绍Java编码规范的内容

AWSDN的博客 2673

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

《阿里巴巴Java开发手册》要点整理

别人都说我们是搬砖的码农,可我们知道自己是追求个性的艺术家。也许我们不会过多在意自己的外表和穿着,但在我们不羁的外表下,骨子里追求着代码的美、系统的美,代码规范其实就是一个对程序美的定义。 声明:本文是对阿里巴巴Java开发手册 v1.4.0 的一个整理。其中去掉了IDE可以帮助我们实现的部分,只整理出个人认为较为重要但在实际开发中易被忽略的点。 编程规约 POJO 类中布尔类型的变量,都不...

PrinceCheng的博客 446

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

阿里巴巴java开发手册 ,java开发规范

阿里巴巴java开发手册 ,java开发规范

g470641382的博客 1618

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

阿里巴巴Java开发手册之注释规约与Javadoc标签和Javadoc注释规范

阿里巴巴Java开发手册之注释规约与Javadoc标签和Javadoc注释规范 最近看源码,一些Javadoc常见的注释整理下 Javadoc是Sun公司提供的一个技术,从程序源代码中抽取类、方法、成员等注释形成一个和源代码配套的API帮助文档。 Javadoc命令是用来生成自己的API文档,使用方式: javadoc 源文件名.java javadoc -d 文档存放目录 源文件名.java 通过IDEA生成Javadoc : Tools -> Generate JavaDoc javad

以码平川的博客 3557

阿里开发规范终极版整理(精简)

Java开发规范 命名 【规范】类名使用 UpperCamelCase 风格,必须遵从驼峰形式,但以下情形例外: ( 领域模型的相关命名 )DO / BO / DTO / VO 等。 正例: MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion 反例: macroPolo / UserDo / XMLService /

路漫漫 始于足下 1万+

阿里巴巴JAVA开发规范&&个人需要注意的点

POJO 类中布尔类型变量都不要加 is 前缀,否则部分框架解析会引起序列化错误 说明:在本文 MySQL 规约中的建表约定第一条,表达是与否的值采用 is_xxx 的命名方式,所以,需要在<resultMap>设置从 is_xxx 到 xxx 的映射关系。 反例:定义为基本数据类型 Boolean isDeleted 的属性,它的方法也是 isDeleted(),RPC 框架在反向解析的时候,“误以为”对应的属性名称是 deleted,导致属性获取不到,进而抛出异常。 如果模块、接口、类、方法

weixin_44233929的博客 6659

《阿里巴巴Java开发手册》:阿里官方Java代码规范标准(抽五人送出)

规范了Java开发准则与代码编写习惯将直接影响Java从业者、求职者和在校相关专业大学生等逾百万的计算机相关人群以阿里的技术底蕴,以一个独特的视角地成为影响到世界的经典计算机图书对Java教育教学产生深远影响对社会贡献及深远影响不可估量内容提要《阿里巴巴Java开发手册》的愿景是码出高效,码出质量。它结合作者的开发经验和架构历程,提炼阿里巴巴集团技术团队的集体编程经验和软件设计智慧,浓缩成为立体的

架构文摘 6306

代码的规范化——阿里巴巴代码规约的插件与使用

阿里巴巴基于《阿里巴巴java开发手册》研发了“阿里巴巴代码规约插件”,它能自动识别我们代码不符合规范的地方并标出来、显示错误信息,这对于新手来说是非常友好的。 代码的规范化非常重要,我们必须从一开始就养成写规范化代码的习惯,这样不仅便于自己以后再来回看以及修改,也方便别人查看自己的代码。想要更深入学习代码规范的,可以去看一下《代码整洁之道》、《重构》这些书本,我有一篇博客记录了《代码整洁之道》...

8-0416 1116

全套阿里巴巴开发手册和大神解读一起给你【2022年整理】

整理了一下全套的开发手册,文中还附上了大牛对开发手册的解读,适合一起读。

老姚 6115

java编码规范(参考阿里巴巴开发手册)

对阿里巴巴java开发手册中所有的强制内容进行了整理

Ez4Sterben的博客 2444
上一篇: Java Reline 堵塞 解决办法 关注readStream方法
下一篇: java poi 读取excel 获取第一个不隐藏的sheet
Angel_Over_
博客等级 码龄10年 2粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值