怎么关闭eclipse 阿里规约编码规约扫描

匿名用户不能发表回复!|读阿里的Java编码规约正式版小结 - 简书
读阿里的Java编码规约正式版小结
基本的知识就不说了,总结一些值得注意和参考的要点1. 类命名遵循驼峰命名方式,对于BO,VO,DO,DTO 特殊含义的需全部大写;2.抽象类以Abstract或Base开头;3.数组的定义格式是 String[] args,而不是String []4.POJO类中布尔类型的变量,都不要加is,否则部分框架解析会引起序列化错误;5.包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用单数形式,但是类名如果有复数含义,类名可以使用复数形式。正例:应用工具类包名为com.alibaba.open.util、类名为MessageUtils6.如果使用到了设计模式,建议在类名中体现出具体模式。说明:将设计模式体现在名字中,有利于阅读者快速理解架构设计思想。正例:public class OrderFpublic class LoginPpublic class ResourceO7.接口和实现类的命名有两套规则:1)【强制】对于Service和DAO类,基于SOA的理念,暴露出来的服务一定是接口,内部的实现类用Impl的后缀与接口区别。正例:CacheServiceImpl实现CacheService接口。2)【推荐】 如果是形容能力的接口名称,取对应的形容词做接口名(通常是–able的形式)。正例:AbstractTranslator实现Translatable。8.【参考】各层命名规约: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。9.不允许出现任何魔法值(即未经定义的常量)直接出现在代码中。反例:String key="Id#taobao_"+tradeId;cache.put(key,value);10.long或者Long初始赋值时,必须使用大写的L,不能是小写的l,小写容易跟数字1混淆,造成误解。11.不要使用一个常量类维护所有常量,应该按常量功能进行归类,分开维护。如:缓存相关的常量放在类:CacheConsts下;系统配置相关的常量放在类:ConfigConsts下12.【强制】缩进采用4个空格,禁止使用tab字符。13.如果使用tab缩进,必须设置1个tab为4个空格。IDEA设置tab为4个空格时,请勿勾选Use tab character,而在eclipse中,必须勾选insert spaces for tabs14.IDE的text file encoding设置为UTF-8; IDE中文件的换行符使用Unix格式,不要使用windows格式15.所有的覆写方法,必须加@Override注解。16.不能使用过时的类或方法。17.推荐使用java.util.Objects#equals(JDK7引入的工具类),使用equals方法时,把常量放前面18.关于基本数据类型与包装数据类型的使用标准如下:1)所有的POJO类属性必须使用包装数据类型。2)RPC方法的返回值和参数必须使用包装数据类型。3)所有的局部变量【推荐】使用基本数据类型。说明:POJO类属性没有初值是提醒使用者在需要使用时,必须自己显式地进行赋值,任何NPE问题,或者入库检查,都由使用者来保证。19.【强制】定义DO/DTO/VO等POJO类时,不要设定任何属性默认值。反例:POJO类的gmtCreate默认值为new Date();但是这个属性在数据提取时并没有置入具体值,在更新其它字段时又附带更新了此字段,导致创建时间被修改成当前时间。20.【强制】序列化类新增属性时,请不要修改serialVersionUID字段,避免反序列失败;如果完全不兼容升级,避免反序列化混乱,那么请修改serialVersionUID值。说明:注意serialVersionUID不一致会抛出序列化运行时异常。21.【强制】POJO类必须写toString方法。使用IDE的中工具:source&generate toString时,如果继承了另一个POJO类,注意在前面加一下super.toString。说明:在方法执行抛出异常时,可以直接调用POJO的toString()方法打印其属性值,便于排查问题。22.【推荐】使用索引访问用String的split方法得到的数组时,需做最后一个分隔符后有无内容的检查,否则会有抛IndexOutOfBoundsException的风险。说明:String str = "a,b,c,,";String[] ary = str.split(",");//预期大于3,结果是3System.out.println(ary.length);23.【推荐】final可提高程序响应效率,声明成final的情况:1)不需要重新赋值的变量,包括类属性、局部变量。2)对象参数前加final,表示不允许修改引用的指向。3)类方法确定不允许被重写24.【推荐】慎用Object的clone方法来拷贝对象。说明:对象的clone方法默认是浅拷贝,若想实现深拷贝需要重写clone方法实现属性对象的拷贝。25.【推荐】类成员与方法访问控制从严:1)如果不允许外部直接通过new来创建对象,那么构造方法必须是private。2)工具类不允许有public或default构造方法。3)类非static成员变量并且与子类共享,必须是protected。4)类非static成员变量并且仅在本类使用,必须是private。5)类static成员变量如果仅在本类使用,必须是private。6)若是static成员变量,必须考虑是否为final。7)类成员方法只供类内部调用,必须是private。8)类成员方法只对继承类公开,那么限制为protected。说明:任何类、方法、参数、变量,严控访问范围。过宽泛的访问范围,不利于模块解耦。思考:如果是一个private的方法,想删除就删除,可是一个public的Service方法,或者一个public的成员变量,删除一下,不得手心冒点汗吗?变量像自己的小孩,尽量在自己的视线内,变量作用域太大,如果无限制的到处跑,那么你会担心的。26.【强制】使用集合转数组的方法,必须使用集合的toArray(T[] array),传入的是类型完全一样的数组,大小就是list.size()。反例:直接使用toArray无参方法存在问题,此方法返回值只能是Object[]类,若强转其它类型数组将出现ClassCastException错误。正例:List list = new ArrayList(2);list.add("guan");list.add("bao");String[] array = new String[list.size()];array = list.toArray(array);说明:使用toArray带参方法,入参分配的数组空间不够大时,toArray方法内部将重新分配内存空间,并返回新数组地址;如果数组元素大于实际所需,下标为[ list.size() ]的数组元素将被置为null,其它数组元素保持原值,因此最好将方法入参数组大小定义与集合元素个数一致。27.【强制】不要在foreach循环里进行元素的remove/add操作。remove元素请使用Iterator方式,如果并发操作,需要对Iterator对象加锁。28.【推荐】集合初始化时,尽量指定集合初始值大小。29.使用entrySet遍历Map类集合KV,而不是keySet方式进行遍历。说明:keySet其实是遍历了2次,一次是转为Iterator对象,另一次是从hashMap中取出key所对应的value。而entrySet只是遍历了一次就把key和value都放到了entry中,效率更高。如果是JDK8,使用Map.foreach方法。正例:values()返回的是V值集合,是一个list集合对象;keySet()返回的是K值集合,是一个Set集合对象;entrySet()返回的是K-V值组合集合。30.由于HashMap的干扰,很多人认为ConcurrentHashMap是可以置入null值,注意存储null值时会抛出NPE异常31.【参考】合理利用好集合的有序性(sort)和稳定性(order),避免集合的无序性(unsort)和不稳定性(unorder)带来的负面影响。说明:稳定性指集合每次遍历的元素次序是一定的。有序性是指遍历的结果是按某种比较规则依次排列的。如:ArrayList是order/HashMap是unorder/TreeSet是order/sort。32.【参考】利用Set元素唯一的特性,可以快速对一个集合进行去重操作,避免使用List的contains方法进行遍历、对比、去重操作33.【强制】线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。说明:Executors返回的线程池对象的弊端如下:1)FixedThreadPool和SingleThreadPool:允许的请求队列长度为Integer.MAX_VALUE,可能会堆积大量的请求,从而导致OOM。2)CachedThreadPool和ScheduledThreadPool:允许的创建线程数量为Integer.MAX_VALUE,可能会创建大量的线程,从而导致OOM。34.【参考】方法中需要进行参数校验的场景:1)调用频次低的方法。2)执行时间开销很大的方法,参数校验时间几乎可以忽略不计,但如果因为参数错误导致中间执行回退,或者错误,那得不偿失。——禁止用于商业用途,违者必究——15/34阿里巴巴Java开发手册3)需要极高稳定性和可用性的方法。4)对外提供的开放接口,不管是RPC/API/HTTP接口。5) 敏感权限入口。35.【强制】方法内部单行注释,在被注释语句上方另起一行,使用//注释。方法内部多行注释使用/* */注释,注意与代码对齐。36.类、类属性、类方法的注释必须使用Javadoc规范,使用/**内容*/格式,不得使用//xxx方式。37.【强制】在使用正则表达式时,利用好其预编译功能,可以有效加快正则匹配速度。说明:不要在方法体内定义:Pattern pattern=Pattern.compile(规则);38.【强制】获取当前毫秒数System.currentTimeMillis();而不是new Date().getTime();说明:如果想获取更加精确的纳秒级时间值,用System.nanoTime()。在JDK8中,针对统计时间等场景,推荐使用Instant类。39.【强制】捕获异常是为了处理它,不要捕获了却什么都不处理而抛弃之,如果不想处理它,请将该异常抛给它的调用者。最外层的业务使用者,必须处理异常,将其转化为用户可以理解的内容40.【强制】不能在finally块中使用return,finally块中的return返回后方法结束执行,不会再执行try块中的return语句41.【推荐】方法的返回值可以为null,不强制返回空集合,或者空对象等,必须添加注释充分说明什么情况下会返回null值。调用方需要进行null判断防止NPE问题。说明:本规约明确防止NPE是调用者的责任。即使被调用方法返回空集合或者空对象,对调用者来说,也并非高枕无忧,必须考虑到远程调用失败,运行时异常等场景返回null的情况。42.【推荐】防止NPE,是程序员的基本修养,注意NPE产生的场景:1)返回类型为包装数据类型,有可能是null,返回int值时注意判空。反例:public int f(){return Integer对象};如果为null,自动解箱抛NPE。2)数据库的查询结果可能为null。3)集合里的元素即使isNotEmpty,取出的数据元素也可能为null。4)远程调用返回对象,一律要求进行NPE判断。5)对于Session中获取的数据,建议NPE检查,避免空指针。6)级联调用obj.getA().getB().getC();一连串调用,易产生NPE。43.【推荐】在代码中使用“抛异常”还是“返回错误码”,对于公司外的http/api开放接口必须使用“错误码”;而应用内部推荐异常抛出;跨应用间RPC调用优先考虑使用Result方式,封装isSuccess、“错误码”、“错误简短信息”。说明:关于RPC方法返回方式使用Result方式的理由:1)使用抛异常返回方式,调用方如果没有捕获到就会产生运行时错误。2)如果不加栈信息,只是new自定义异常,加入自己的理解的error message,对于调用端解决问题的帮助不会太多。如果加了栈信息,在频繁调用出错的情况下,数据序列化和传输的性能损耗也是问题。44.【强制】应用中不可直接使用日志系统(Log4j、Logback)中的API,而应依赖使用日志框架SLF4J中的API,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。import org.slf4j.Limport org.slf4j.LoggerFprivate static final Logger logger = LoggerFactory.getLogger(Abc.class);45.【推荐】给JVM设置-XX:+HeapDumpOnOutOfMemoryError参数,让JVM碰到OOM场景时输出dump信息。说明:OOM的发生是有概率的,甚至有规律地相隔数月才出现一例,出现时的现场信息对查错非常有价值。46.【强制】表单、AJAX提交必须执行CSRF安全过滤。说明:CSRF(Cross-site request forgery)跨站请求伪造是一类常见编程漏洞。对于存在CSRF漏洞的应用/网站,攻击者可以事先构造好URL,只要受害者用户一访问,后台便在用户不知情情况下对数据库中用户参数进行相应修改。
奋进的 mile
来源与:阿里云栖 禁止用于商业用途 ps:如果需要电子书 评论你们邮箱 我会发给你们 下面感觉还是有点乱 目录 一 、编程规约 编程规约 .......................................................................
目录 一、 编程规约..................................................................................................................................
传送门 解读阿里Java开发手册(v1.1.1) - 异常日志 前言 阿里Java开发手册谈不上圣经,但确实是大量程序员踩坑踩出来的一部非常有价值的宝典。其从代码规范性、性能、健壮性、安全性等方面出发,对程序员提出了一系列简单直观的要求,对于人员流动性强,程序员技术水平参差...
本文欢迎转载,转载请注明原文链接,并附作者个人信息李艳鹏。 最近,阿里巴巴发布了《阿里巴巴Java开发手册》,总结了阿里人多年一线实战中积累的研发流程规范,这些流程规范在一定程度上能够保证最终的项目交付质量,通过限制开发人员的编程风格、实现方式来避免研发人员在实践中容易犯的...
百战程序员_ Java1573题 QQ群:034603 掌握80%年薪20万掌握50%年薪10万 全程项目穿插, 从易到难,含17个项目视频和资料持续更新,请关注www.itbaizhan.com 国内最牛七星级团队马士兵、高淇等11位十年开发经验专...
写了一个多月的手帐,第一次非常满意的手帐排版~ 接下来继续加油!Fighting!
QQ群: &拍照那点事儿&技术群是我(Leo大叔)建立的一个专注于入门摄影技术讨论的群,我们不用随意的赞扬,我们可以随意的调侃,但我们更需要严肃的评论。 什么情况你会被禁言12个小时: 发送任何自定义表情,动画(比如早上好,升群旗但不限于这些)。 什么情况...
下载16*16字库到AndroidStudio的assets目录(需自行创建)下,并在程序中最好定义private static void String dotMatrixFont = &HZK16.dat& 创建一个方法用于获取汉字,并转化成取模数据 获取当前汉字的GB2...
杯酒,灌溉了城下青黄的草 易水袅袅拜伏 我提缰勒住马蹄 回望千里外的河山 旗帜如云 腰间别着头颅,血仍未冷 阖上眼,咽下清泪 不为丹,也不为樊於期 这一刻,突然恨透了咸阳的春风 恨它吹开野花吹绿叶百草 我纵马驰向暮色深处 剑举在眉间,绽放来世
此时 我想写点什么 撼天的吼声绑架着我 强奸我的思想 蹂躏着我的胸怀 思想在泪水中冲破 为我撕碎在大地蔓延的影子报仇 用你的长眠 换取我精神的自由 该死 该死 此时
我想让你仙逝 铁牢探月放风的我 赐你白绫三尺 七步女儿一壶 狰狞露骨的手抚平你喉咙脉搏的跳动 低低的怒吼...他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)1619人阅读
10月14日上午9:00
阿里巴巴于在杭州云栖大会《研发效能峰会》上,正式发布《阿里巴巴Java开发手册》扫描插件,该插件在扫描代码后,将不符合《手册》的代码按Blocker/Critical/Major三个等级显示在下方,甚至在IDEA上,还基于Inspection机制提供了实时检测功能,编写代码的同时也能快速发现问题所在。对于历史代码,部分规则实现了批量一键修复的功能。–两个字牛逼
IDea的安装方式:
IDEA版的插件发布到了IDEA官方仓库中(最低支持版本14.1.7,JDK1.7+),
Settings && Plugins && Browse repositories
输入 Alibaba 搜索一下便可以看到对应插件了,点击安装等待安装完成。
Eclipse的安装方式:
Eclipse版插件支持4.2(Juno,JDK1.8+)及以上版本,提供Update Site,通过
Help && Install New Software
然后输入 即可看到安装列表,安装即可。
插件的更新,可以通过 Help && Check for Udates 进行新版本检测。
右键,,看图 –
还有自动提示的效果
可以说是非常棒了
文章如有侵权地方,请告知删除
我的CSDN地址
我的简书地址
我的github
我的码云地址
阿里云优惠券阿里巴巴Java开发规约插件简要说明赞赏还没有人赞赏,快来当第一个赞赏的人吧!13收藏分享举报文章被以下专栏收录仰天大笑出门去,我辈岂是蓬蒿人{&debug&:false,&apiRoot&:&&,&paySDK&:&https:\u002F\u002Fpay.zhihu.com\u002Fapi\u002Fjs&,&wechatConfigAPI&:&\u002Fapi\u002Fwechat\u002Fjssdkconfig&,&name&:&production&,&instance&:&column&,&tokens&:{&X-XSRF-TOKEN&:null,&X-UDID&:null,&Authorization&:&oauth c3cef7c66aa9e6a1e3160e20&}}{&database&:{&Post&:{&&:{&isPending&:false,&contributes&:[{&sourceColumn&:{&lastUpdated&:,&description&:&致力于研究Java安全&,&permission&:&COLUMN_PUBLIC&,&memberId&:,&contributePermission&:&COLUMN_PUBLIC&,&translatedCommentPermission&:&all&,&canManage&:true,&intro&:&仰天大笑出门去,我辈岂是蓬蒿人&,&urlToken&:&javasecurity&,&id&:47408,&imagePath&:&v2-ccde3a555faa309a80963.png&,&slug&:&javasecurity&,&applyReason&:&0&,&name&:&Java安全&,&title&:&Java安全&,&url&:&https:\u002F\u002Fzhuanlan.zhihu.com\u002Fjavasecurity&,&commentPermission&:&COLUMN_ALL_CAN_COMMENT&,&canPost&:true,&created&:,&state&:&COLUMN_NORMAL&,&followers&:624,&avatar&:{&id&:&v2-ccde3a555faa309a80963&,&template&:&https:\u002F\u002Fpic4.zhimg.com\u002F{id}_{size}.jpg&},&activateAuthorRequested&:false,&following&:false,&imageUrl&:&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-ccde3a555faa309a80963_l.jpg&,&articlesCount&:11},&state&:&accepted&,&targetPost&:{&titleImage&:&&,&lastUpdated&:,&imagePath&:&&,&permission&:&ARTICLE_PUBLIC&,&topics&:[],&summary&:&日杭州云栖大会,Java代码规约扫描插件全球首发仪式正式启动,规范正式以插件形式公开走向业界,引领Java语言的规范之路。Java代码规约扫描插件以今年年初发布的《阿里巴巴Java开发规约》为标准,作为Eclipse、IDEA的插件形式存在,检测JAVA代…&,&copyPermission&:&ARTICLE_COPYABLE&,&translatedCommentPermission&:&all&,&likes&:0,&origAuthorId&:0,&publishedTime&:&T17:48:03+08:00&,&sourceUrl&:&&,&urlToken&:,&id&:4242908,&withContent&:false,&slug&:,&bigTitleImage&:false,&title&:&阿里巴巴Java开发规约插件简要说明&,&url&:&\u002Fp\u002F&,&commentPermission&:&ARTICLE_ALL_CAN_COMMENT&,&snapshotUrl&:&&,&created&:,&comments&:0,&columnId&:0,&content&:&&,&parentId&:0,&state&:&ARTICLE_PUBLISHED&,&imageUrl&:&&,&author&:{&bio&:&IT男 信安&,&isFollowing&:false,&hash&:&220f0ad208a2ddca5f49e5fad41be09e&,&uid&:826400,&isOrg&:false,&slug&:&lu-xiao-tian-75&,&isFollowed&:false,&description&:&.&,&name&:&蓬蒿&,&profileUrl&:&https:\u002F\u002Fwww.zhihu.com\u002Fpeople\u002Flu-xiao-tian-75&,&avatar&:{&id&:&v2-e6a38f03d0ec6ac42f254ee&,&template&:&https:\u002F\u002Fpic4.zhimg.com\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},&memberId&:,&excerptTitle&:&&,&voteType&:&ARTICLE_VOTE_CLEAR&},&id&:866595}],&title&:&阿里巴巴Java开发规约插件简要说明&,&author&:&lu-xiao-tian-75&,&content&:&\u003Cp\u003E日杭州云栖大会,Java代码规约扫描插件全球首发仪式正式启动,规范正式以插件形式公开走向业界,引领Java语言的规范之路。\u003C\u002Fp\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-0cc9a6bf058_b.jpg\& data-caption=\&\& data-rawwidth=\&600\& data-rawheight=\&333\& class=\&origin_image zh-lightbox-thumb\& width=\&600\& data-original=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-0cc9a6bf058_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='600'%20height='333'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&600\& data-rawheight=\&333\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&600\& data-original=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-0cc9a6bf058_r.jpg\& data-actualsrc=\&https:\u002F\u002Fpic1.zhimg.com\u002Fv2-0cc9a6bf058_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003EJava代码规约扫描插件以今年年初发布的《阿里巴巴Java开发规约》为标准,作为Eclipse、IDEA的插件形式存在,检测JAVA代码中存在不规范得位置然后给予提示。规约插件是采用\u003Ca href=\&http:\u002F\u002Flink.zhihu.com\u002F?target=https%3A\u002F\u002Fgithub.com\u002Falibaba\u002Fp3c\u002Ftree\u002Fmaster\u002Fidea-plugin\u002Fp3c-common\u002Fsrc\u002Fmain\u002Fkotlin\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003Ekotlin\u003C\u002Fa\u003E语言开发的,感兴趣的同学可以去开看插件源码。\u003C\u002Fp\u003E\u003Cp\u003E插件地址: \u003Ca href=\&http:\u002F\u002Flink.zhihu.com\u002F?target=https%3A\u002F\u002Fgithub.com\u002Falibaba\u002Fp3c\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003Ealibaba\u002Fp3c\u003C\u002Fa\u003E\u003C\u002Fp\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-d6f2e8efafdbf_b.jpg\& data-caption=\&\& data-rawwidth=\&1285\& data-rawheight=\&650\& class=\&origin_image zh-lightbox-thumb\& width=\&1285\& data-original=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-d6f2e8efafdbf_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='1285'%20height='650'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&1285\& data-rawheight=\&650\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&1285\& data-original=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-d6f2e8efafdbf_r.jpg\& data-actualsrc=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-d6f2e8efafdbf_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E一、插件安装\u003C\u002Fp\u003E\u003Cp\u003E本文以Intellij为例安装插件,Eclipse等其他IDEA工具,同学们可以自己看看官方资料\u003C\u002Fp\u003E\u003Cp\u003EFile--&Setting--&Plugins--&Browse repositories--&输入Alibaba\u003C\u002Fp\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-0a60a3b752fe7d25e911_b.jpg\& data-caption=\&\& data-rawwidth=\&1311\& data-rawheight=\&594\& class=\&origin_image zh-lightbox-thumb\& width=\&1311\& data-original=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-0a60a3b752fe7d25e911_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='1311'%20height='594'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&1311\& data-rawheight=\&594\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&1311\& data-original=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-0a60a3b752fe7d25e911_r.jpg\& data-actualsrc=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-0a60a3b752fe7d25e911_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E二、功能说明\u003C\u002Fp\u003E\u003Cp\u003E规约扫描插件支持插件中文,不过笔者使用惯了findbugs、pmd等静态代码分析工具的英文说明,看着中文有点别扭,不过阿里巴巴支持语言切换至英文。\u003C\u002Fp\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-1e82d4d3bfd23280e10efcd89e9c349d_b.jpg\& data-caption=\&\& data-rawwidth=\&1359\& data-rawheight=\&397\& class=\&origin_image zh-lightbox-thumb\& width=\&1359\& data-original=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-1e82d4d3bfd23280e10efcd89e9c349d_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='1359'%20height='397'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&1359\& data-rawheight=\&397\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&1359\& data-original=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-1e82d4d3bfd23280e10efcd89e9c349d_r.jpg\& data-actualsrc=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-1e82d4d3bfd23280e10efcd89e9c349d_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E阿里巴巴规约插件包含三个子菜单:编码规约扫描、关闭试试检测功能、切换语言至英文(English)。如果工具栏显示中文乱码,可能是字体不支持中文显示,可以在\u003C\u002Fp\u003E\u003Cp\u003ESettings---&Appearance&Behavior---&Appearance选择支持中文的支持\u003C\u002Fp\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-0c2f28efad_b.jpg\& data-caption=\&\& data-rawwidth=\&1342\& data-rawheight=\&591\& class=\&origin_image zh-lightbox-thumb\& width=\&1342\& data-original=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-0c2f28efad_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='1342'%20height='591'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&1342\& data-rawheight=\&591\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&1342\& data-original=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-0c2f28efad_r.jpg\& data-actualsrc=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-0c2f28efad_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E编码规约扫描插件扫描结果包含三个bug等级Blocker(崩溃)、Critical(严重)、Major(主要)。\u003C\u002Fp\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-ff4bd859ef1b701e_b.jpg\& data-caption=\&\& data-rawwidth=\&1323\& data-rawheight=\&627\& class=\&origin_image zh-lightbox-thumb\& width=\&1323\& data-original=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-ff4bd859ef1b701e_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='1323'%20height='627'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&1323\& data-rawheight=\&627\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&1323\& data-original=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-ff4bd859ef1b701e_r.jpg\& data-actualsrc=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-ff4bd859ef1b701e_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E我们可以查看编辑器Inspection,Inspection对每条规约都有详细介绍\u003C\u002Fp\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-962a009f90c11ccaec6dfaba24db9a8e_b.jpg\& data-caption=\&\& data-rawwidth=\&1343\& data-rawheight=\&593\& class=\&origin_image zh-lightbox-thumb\& width=\&1343\& data-original=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-962a009f90c11ccaec6dfaba24db9a8e_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='1343'%20height='593'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&1343\& data-rawheight=\&593\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&1343\& data-original=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-962a009f90c11ccaec6dfaba24db9a8e_r.jpg\& data-actualsrc=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-962a009f90c11ccaec6dfaba24db9a8e_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E编码规约扫描插件支持在提交代码执GIT、SVN等VCS版本工具之前对代码进行规约检查\u003C\u002Fp\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-9f316c00449fad2b22e9c337b071ebb2_b.jpg\& data-caption=\&\& data-rawwidth=\&1200\& data-rawheight=\&673\& class=\&origin_image zh-lightbox-thumb\& width=\&1200\& data-original=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-9f316c00449fad2b22e9c337b071ebb2_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='1200'%20height='673'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&1200\& data-rawheight=\&673\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&1200\& data-original=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-9f316c00449fad2b22e9c337b071ebb2_r.jpg\& data-actualsrc=\&https:\u002F\u002Fpic2.zhimg.com\u002Fv2-9f316c00449fad2b22e9c337b071ebb2_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E三、源码分析\u003C\u002Fp\u003E\u003Cp\u003E规约插件是采用\u003Ca href=\&http:\u002F\u002Flink.zhihu.com\u002F?target=https%3A\u002F\u002Fgithub.com\u002Falibaba\u002Fp3c\u002Ftree\u002Fmaster\u002Fidea-plugin\u002Fp3c-common\u002Fsrc\u002Fmain\u002Fkotlin\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003Ekotlin\u003C\u002Fa\u003E语言开发的,kt代码本身不复杂,对开发IDEA插件和代码分析感兴趣的同学可以去开看插件源码。\u003C\u002Fp\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-efcf678a7464960fedf89287_b.jpg\& data-caption=\&\& data-rawwidth=\&1345\& data-rawheight=\&479\& class=\&origin_image zh-lightbox-thumb\& width=\&1345\& data-original=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-efcf678a7464960fedf89287_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='1345'%20height='479'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&1345\& data-rawheight=\&479\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&1345\& data-original=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-efcf678a7464960fedf89287_r.jpg\& data-actualsrc=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-efcf678a7464960fedf89287_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\u002Fpic6.zhimg.com\u002Fv2-8faa298fbe60ffde26f9bf8_b.jpg\& data-caption=\&\& data-rawwidth=\&1343\& data-rawheight=\&589\& class=\&origin_image zh-lightbox-thumb\& width=\&1343\& data-original=\&https:\u002F\u002Fpic6.zhimg.com\u002Fv2-8faa298fbe60ffde26f9bf8_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='1343'%20height='589'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&1343\& data-rawheight=\&589\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&1343\& data-original=\&https:\u002F\u002Fpic6.zhimg.com\u002Fv2-8faa298fbe60ffde26f9bf8_r.jpg\& data-actualsrc=\&https:\u002F\u002Fpic6.zhimg.com\u002Fv2-8faa298fbe60ffde26f9bf8_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-b7b52ecd01568c8eff76a0d3e7ab1d86_b.jpg\& data-caption=\&\& data-rawwidth=\&1172\& data-rawheight=\&530\& class=\&origin_image zh-lightbox-thumb\& width=\&1172\& data-original=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-b7b52ecd01568c8eff76a0d3e7ab1d86_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='1172'%20height='530'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&1172\& data-rawheight=\&530\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&1172\& data-original=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-b7b52ecd01568c8eff76a0d3e7ab1d86_r.jpg\& data-actualsrc=\&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-b7b52ecd01568c8eff76a0d3e7ab1d86_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cfigure\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-bcc9bfafb5e6_b.jpg\& data-caption=\&\& data-rawwidth=\&1241\& data-rawheight=\&333\& class=\&origin_image zh-lightbox-thumb\& width=\&1241\& data-original=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-bcc9bfafb5e6_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='1241'%20height='333'&&\u002Fsvg&\& data-caption=\&\& data-rawwidth=\&1241\& data-rawheight=\&333\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&1241\& data-original=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-bcc9bfafb5e6_r.jpg\& data-actualsrc=\&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-bcc9bfafb5e6_b.jpg\&\u003E\u003C\u002Ffigure\u003E\u003Cp\u003E四、总结分析\u003C\u002Fp\u003E\u003Cp\u003E规约插件实际上是Alibaba技术文化重要输出部分,毋庸置疑的是A里巴巴内部经过多年试错、沉淀出来的成果,但是作为技术人员还是抱着批判性思维来看待这款工具。大家在看&&阿里巴巴Java开发规约&&还是要根据实际业务场景和历史技术问题来进行思考使用\u003C\u002Fp\u003E&,&updated&:new Date(&T09:48:03.000Z&),&canComment&:false,&commentPermission&:&anyone&,&commentCount&:1,&collapsedCount&:0,&likeCount&:13,&state&:&published&,&isLiked&:false,&slug&:&&,&lastestTipjarors&:[],&isTitleImageFullScreen&:false,&rating&:&none&,&titleImage&:&&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&reviewers&:[],&topics&:[{&url&:&https:\u002F\u002Fwww.zhihu.com\u002Ftopic\u002F&,&id&:&&,&name&:&code review&},{&url&:&https:\u002F\u002Fwww.zhihu.com\u002Ftopic\u002F&,&id&:&&,&name&:&代码质量&}],&adminClosedComment&:false,&titleImageSize&:{&width&:0,&height&:0},&href&:&\u002Fapi\u002Fposts\u002F&,&excerptTitle&:&&,&tipjarState&:&activated&,&tipjarTagLine&:&真诚赞赏,手留余香&,&sourceUrl&:&&,&pageCommentsCount&:1,&tipjarorCount&:0,&annotationAction&:[],&hasPublishingDraft&:false,&snapshotUrl&:&&,&publishedTime&:&T17:48:03+08:00&,&url&:&\u002Fp\u002F&,&lastestLikers&:[{&bio&:&低级程序员&,&isFollowing&:false,&hash&:&0bbea29e281a4e371f00601&,&uid&:719200,&isOrg&:false,&slug&:&xi-yan-gen-ban&,&isFollowed&:false,&description&:&&,&name&:&戏言跟班&,&profileUrl&:&https:\u002F\u002Fwww.zhihu.com\u002Fpeople\u002Fxi-yan-gen-ban&,&avatar&:{&id&:&da8e974dc&,&template&:&https:\u002F\u002Fpic4.zhimg.com\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},{&bio&:&程序猿&,&isFollowing&:false,&hash&:&23ebff24c84d3002c4aef3951aafb6cb&,&uid&:04,&isOrg&:false,&slug&:&zhou-xiao-cao-73&,&isFollowed&:false,&description&:&&,&name&:&MrZhou&,&profileUrl&:&https:\u002F\u002Fwww.zhihu.com\u002Fpeople\u002Fzhou-xiao-cao-73&,&avatar&:{&id&:&266edab4b1bbd&,&template&:&https:\u002F\u002Fpic1.zhimg.com\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},{&bio&:&微信公众号:EnjoyMoving&,&isFollowing&:false,&hash&:&fb5092bdebb6cfb356a9&,&uid&:08,&isOrg&:false,&slug&:&doing_what_i_love&,&isFollowed&:false,&description&:& 微信公众号:EnjoyMoving&,&name&:&Doing&,&profileUrl&:&https:\u002F\u002Fwww.zhihu.com\u002Fpeople\u002Fdoing_what_i_love&,&avatar&:{&id&:&v2-d708c9d16d0cb8ffad0755&,&template&:&https:\u002F\u002Fpic3.zhimg.com\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},{&bio&:&Innocence is happiness.&,&isFollowing&:false,&hash&:&de5debd2fb34aebe6ca848&,&uid&:44,&isOrg&:false,&slug&:&kevin-hill&,&isFollowed&:false,&description&:&ESTJ\u002FENTJ. WeChat: xxxxxxxxxdddd&,&name&:&Kevin Hill&,&profileUrl&:&https:\u002F\u002Fwww.zhihu.com\u002Fpeople\u002Fkevin-hill&,&avatar&:{&id&:&da8e974dc&,&template&:&https:\u002F\u002Fpic4.zhimg.com\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},{&bio&:&朝设计狮和程序猿进化的产品汪&,&isFollowing&:false,&hash&:&0b4ac07bd8af5e1aaec1b&,&uid&:00,&isOrg&:false,&slug&:&kind860532&,&isFollowed&:false,&description&:&励志在技术上从小D变成大D&,&name&:&文沛&,&profileUrl&:&https:\u002F\u002Fwww.zhihu.com\u002Fpeople\u002Fkind860532&,&avatar&:{&id&:&v2-7a65ef190&,&template&:&https:\u002F\u002Fpic4.zhimg.com\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false}],&summary&:&\u003Cimg src=\&http:\u002F\u002Fpic1.zhimg.com\u002Fv2-0cc9a6bf058_200x112.jpg\& data-caption=\&\& data-rawwidth=\&600\& data-rawheight=\&333\& class=\&origin_image inline-img zh-lightbox-thumb\& data-original=\&http:\u002F\u002Fpic1.zhimg.com\u002Fv2-0cc9a6bf058_r.jpg\&\u003E日杭州云栖大会,Java代码规约扫描插件全球首发仪式正式启动,规范正式以插件形式公开走向业界,引领Java语言的规范之路。Java代码规约扫描插件以今年年初发布的《阿里巴巴Java开发规约》为标准,作为Eclipse、IDEA的插件形式存在,检测JAVA代…&,&reviewingCommentsCount&:0,&meta&:{&previous&:null,&next&:null},&annotationDetail&:null,&commentsCount&:1,&likesCount&:13,&FULLINFO&:true}},&User&:{&lu-xiao-tian-75&:{&isFollowed&:false,&name&:&蓬蒿&,&headline&:&.&,&avatarUrl&:&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-e6a38f03d0ec6ac42f254ee_s.jpg&,&isFollowing&:false,&type&:&people&,&slug&:&lu-xiao-tian-75&,&bio&:&IT男 信安&,&hash&:&220f0ad208a2ddca5f49e5fad41be09e&,&uid&:826400,&isOrg&:false,&description&:&.&,&badge&:{&identity&:null,&bestAnswerer&:null},&profileUrl&:&https:\u002F\u002Fwww.zhihu.com\u002Fpeople\u002Flu-xiao-tian-75&,&avatar&:{&id&:&v2-e6a38f03d0ec6ac42f254ee&,&template&:&https:\u002F\u002Fpic4.zhimg.com\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false}},&Comment&:{},&favlists&:{}},&me&:{},&global&:{&experimentFeatures&:{&ge3&:&ge3_9&,&ge2&:&ge2_1&,&growthSearch&:&s2&,&sEI&:&c&,&nwebQAGrowth&:&experiment&,&qawebRelatedReadingsContentControl&:&close&,&liveStore&:&ls_a2_b2_c1_f2&,&nwebSearch&:&nweb_search_heifetz&,&rt&:&y&,&isOffice&:&false&,&enableTtsPlay&:&post&,&newLiveFeedMediacard&:&new&,&newMobileAppHeader&:&true&,&androidPassThroughPush&:&all&,&hybridZhmoreVideo&:&yes&,&nwebGrowthPeople&:&default&,&nwebSearchSuggest&:&default&,&qrcodeLogin&:&qrcode&,&enableVoteDownReasonMenu&:&enable&,&isShowUnicomFreeEntry&:&unicom_free_entry_off&,&newMobileColumnAppheader&:&new_header&,&androidDbRecommendAction&:&open&,&biu&:&1&,&androidDbFeedHashTagStyle&:&button&,&appStoreRateDialog&:&close&,&default&:&None&,&isNewNotiPanel&:&no&,&zcmLighting&:&zcm&,&adR&:&b&,&wechatShareModal&:&wechat_share_modal_show&,&growthBanner&:&default&,&androidProfilePanel&:&panel_b&}},&columns&:{&next&:{}},&columnPosts&:{},&columnSettings&:{&colomnAuthor&:[],&uploadAvatarDetails&:&&,&contributeRequests&:[],&contributeRequestsTotalCount&:0,&inviteAuthor&:&&},&postComments&:{},&postReviewComments&:{&comments&:[],&newComments&:[],&hasMore&:true},&favlistsByUser&:{},&favlistRelations&:{},&promotions&:{},&switches&:{&couldSetPoster&:false},&draft&:{&titleImage&:&&,&titleImageSize&:{},&isTitleImageFullScreen&:false,&canTitleImageFullScreen&:false,&title&:&&,&titleImageUploading&:false,&error&:&&,&content&:&&,&draftLoading&:false,&globalLoading&:false,&pendingVideo&:{&resource&:null,&error&:null}},&drafts&:{&draftsList&:[],&next&:{}},&config&:{&userNotBindPhoneTipString&:{}},&recommendPosts&:{&articleRecommendations&:[],&columnRecommendations&:[]},&env&:{&edition&:{&baidu&:false,&yidianzixun&:false,&qqnews&:false},&isAppView&:false,&appViewConfig&:{&content_padding_top&:128,&content_padding_bottom&:56,&content_padding_left&:16,&content_padding_right&:16,&title_font_size&:22,&body_font_size&:16,&is_dark_theme&:false,&can_auto_load_image&:true,&app_info&:&OS=iOS&},&isApp&:false,&userAgent&:{&ua&:&Mozilla\u002F5.0 (compatible, MSIE 11, Windows NT 6.3; Trident\u002F7.0; rv:11.0) like Gecko&,&browser&:{&name&:&IE&,&version&:&11&,&major&:&11&},&engine&:{&version&:&7.0&,&name&:&Trident&},&os&:{&name&:&Windows&,&version&:&8.1&},&device&:{},&cpu&:{}}},&message&:{&newCount&:0},&pushNotification&:{&newCount&:0}}}

我要回帖

更多关于 阿里 java编码规约 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信