为了迎接十九大的到来,帝都城这几天也是满城风雨,听说早高峰期地铁站的人都排到天桥上了,哎,这就是该死的北漂生活。但是无论怎样,我依然在北京向各位问好!
之前总结过俩篇关于阿里Java开发手册的编程规约(http://www.cnblogs.com/1315925303zxz/p/6934575.html、http://www.cnblogs.com/1315925303zxz/p/6899728.html)的博客,我想说那近乎纸上谈兵,很多自律性比较差的同志坚持几天就又回归原点了,又是每天在SVN上*发挥着自己狠个性的代码风格。不过没关系今天我督促你一把,我一直是一个对代码有洁癖的程序员,所以就比较喜欢这类东西的出现,也比较喜欢和各位总结分享,说不定哪天我去你们公司碰上你写的代码,恰好是我分享的编码规约,那岂不皆大欢喜。
好了,不是废话的也说了这么多,想必大家都知道公元2017-10-15,在技术论坛里那是一片沸腾,阿里首发了Java开发规约插件,当时我在地铁上看的那叫一个兴奋,由于昨天有点忙,所以今天抽空给各位分享一下该插件的安装和使用,以及我们需要修行的代码风格。
阿里代码规约插件的安装:
官方推荐IDEA使用编码规约插件jdk至少是1.7+,eclipse使用编码规约插件jdk至少是1.8+。但是本人使用的是Spring Tool Suite开发工具(spring的一个开发插件),jdk是1.7的,但是今天安装后能够正常使用,具体原因我也没有详细去查,但是结果是好的,再说一次能够正常使用。
打开eclipse或者Spring Tool Suite工具,通过 Help 菜单>>选择 Install New Software,然后输入https://p3c.alibaba.com/plugin/eclipse/update 即可看到安装列表,然后安装即可,如果在安装过程中如果出现警告信息则可不比关心,跳过即可。
阿里代码规约插件的使用:
如果你已经在你的开发工具中安装了阿里代码规约插件,你可以在某个类或者某个包上鼠标右键,就会看到【阿里编码规约扫描】神器了,抓紧试试,看看自己写的代码是有多丑。
阿里编码规约扫描的结果总结:
通过阿里代码规约插件的几通扫描,丑陋的代码原形毕露,我可是费了老半天才帮它们化好妆的。首先普及各位三个单词:blocker(雏形锻模,预锻模)、Critical(关键的; 批评的,爱挑剔的; 严重的; 极重要的)、Major(主要的; 重要的; 大调的)。这三个单词代表代码规约插件扫描出来的三类不规范的信息列表,具体的信息你自己去体验一把就知道了。
当你右键执行>>阿里编码规约扫描时,就会在开发工具的通知栏中出现以下俩个选项卡P3C Results和Rule Detail,前者代表扫描出的不规范的错误列表,后者代表各个列表项不规范的详细情况,最主要的是举例教你如何改正,我喜欢。
就我今天扫描出的不规范代码,有几点是值得注意的,特此记录一下:
1、Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用equals。
我的代码风格:
if (ip.equals("127.0.0.1") || ip.equals("0:0:0:0:0:0:0:1")) {
插件代码风格:
if ("127.0.0.1".equals(ip) || "0:0:0:0:0:0:0:1".equals(ip)) {
2、不允许任何魔法值(即未经定义的常量)直接出现在代码中。
我的代码风格:
if (currentMonth >= 1 && currentMonth <= 3) {
插件代码风格:
String KEY_PRE = "Id#taobao_1";
if(key.equals(KEY_PRE)){
//...
}
3、方法内部单行注释,在被注释语句上方另起一行,使用//注释。方法内部多行注释使用/* */注释。注意与代码对齐。 【注释这块我个人是非常重视的】
4、类、类属性、类方法的注释必须使用javadoc规范,使用/**内容*/格式,不得使用//xxx方式和/*xxx*/方式。说明:在IDE编辑窗口中,javadoc方式会提示相关注释,生成javadoc可以正确输出相应注释;在IDE中,工程调用方法时,不进入方法即可悬浮提示方法、参数、返回值的意义,提高阅读效率。
5、循环体内,字符串的联接方式,使用StringBuilder的append方法进行扩展。说明:反编译出的字节码文件显示每次循环都会new出一个StringBuilder对象,然后进行append操作,最后通过toString方法返回String对象,造成内存资源浪费。
反例:
String result;
for (String string : tagNameList) {
result = result + string;
}
正例:
StringBuilder stringBuilder = new StringBuilder();
for (String string : tagNameList) {
stringBuilder.append(string);
}
String result = stringBuilder.toString();
6、集合初始化时,指定集合初始值大小。HashMap使用如下构造方法进行初始化,如果暂时无法确定集合大小,那么指定默认值(16)即可。这块我个人的代码扫出了一大堆,以后真得防范了。
到这儿可能就会有人站出来反对,功能实现了比啥都重要,至于浪费精力去关注代码的规范性嘛,那么我想送朋友一句话:谁会愿意通过一张邋遢的外表去发现内心一颗高尚的心。日常开发中也是一样,如果你写的代码再优再牛逼,你试试将一个项目中所有代码搞得长一行短一行格式乱七八糟,甚至连最基本的类、接口注释都不写,谁会愿意去发现你是一位牛逼的程序员。
朋友,别忘了在装扮自己代码的同时顶个赞吧,我只是想给那些插件开发的阿里伙伴们付出的247个日夜点个赞,他们的确很棒,愿他们在以后的开发路上激情永在,薪水倍升!
为什么阿里的程序员那么帅?---原来他们都有"编码规约扫描"神器在手的更多相关文章
-
十面阿里 Java 程序员,最终拿下阿里 P6 offer!
转子:https://mp.weixin.qq.com/s/RkMxPbm8E99-rTZKmvBy6Q 今天介绍小编的一个朋友,他现今有四年开发经验了,前前后后为了进阿里面试十次(阿里旗下—蚂蚁金服 ...
-
IOS-每个程序员的编程之路上都应该看这11本书
国外知名网站*上有一个问题调查: 哪本书是对程序员最有影响.每个程序员都该阅读的书?,这个调查已历时两年,目前为止吸引了153,432人访问,读者共推荐出了478本书(还在增加 ...
-
【好程序员笔记分享】——URL解码与编码
-iOS培训,iOS学习-------型技术博客.期待与您交流!------------ 1.url编码 ios中http请求遇到汉字的时候,需要转化成UTF-8,用到的方法是: NSString * ...
-
程序员写了一个新手都写不出的低级bug,被骂惨了。
你知道的越多,你不知道的越多 点赞再看,养成习惯 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Star和 ...
-
蚂蚁上市员工人均一套大 House,阿里程序员身价和这匹配吗?
作者 | 硬核云顶宫 责编 | 伍杏玲 出品 | CSDN(ID:CSDNnews) 上周,蚂蚁集团迎来IPO,其发行价格将达到68.8元,总市值将突破2万亿元.市场对蚂蚁的成长性有着充分的信心,为了 ...
-
万能的林萧说:我来告诉你,一个草根程序员如何进入BAT。
引言 首先声明,不要再问LZ谁是林萧,林萧就是某著名程序员小说的主角名字. 写这篇文章的目的其实很简单,算是对之前LZ一篇文章的补充和完善. 之前LZ写过一篇<回答阿里社招面试如何准备,顺便谈谈 ...
-
嫁给程序员的好处,你get到了吗?
首先,我们要知道,什么是程序员?程序员是做什么的? "程序员(英文Programmer)是从事程序开发.维护的专业人员.一般将程序员分为程序设计人员和程序编码人员,但两者的界限并不非常清楚, ...
-
程序人生:02我来告诉你,一个草根程序员如何进入BAT
本文摘自左潇龙博客,原文出处:http://www.cnblogs.com/zuoxiaolong/p/life54.html 引言 首先声明,不要再问LZ谁是林萧,林萧就是某著名程序员小说的主角名字 ...
-
草根程序员如何进入BAT
首页 最新文章 IT 职场 前端 后端 移动端 数据库 运维 其他技术 - 导航条 - 首页 最新文章 IT 职场 前端 - JavaScript - HTML5 - CSS 后端 - Pyt ...
随机推荐
-
hadoop 安装教程 转载
hadoop2.2安装教程:http://www.aboutyun.com/thread-7684-1-1.html hadoop2.X使用手册1:通过web端口查看主节点.slave1节点及集群运行 ...
-
CentOS_7.2安装Nginx_1.9
一.安装依赖包和开发工具: yum install vim vim-enhanced wget zip unzip telnet ntsysv compat* apr* nasm* gcc gcc* ...
-
JavaScript Patterns 4.3 Returning Functions
Use closure to store some private data, which is accessible by the returned function but not to the ...
-
常用加密算法的Java实现(一) ——单向加密算法MD5和SHA
1.Java的安全体系架构 1.1 Java的安全体系架构介绍 Java中为安全框架提供类和接口.JDK 安全 API 是 Java 编程语言的核心 API,位于 java.sec ...
-
jquery放大镜插件与样式
这是放大镜插件链接,我已经上传到我博客http://files.cnblogs.com/valiant1882331/%E6%94%BE%E5%A4%A7%E9%95%9C%E6%8F%92%E4%B ...
-
IntelliJ IDEA常见问题解决办法汇总
(1)SVN相关的操作: 启用:方法1:VCS菜单下Enable Version Control Integration,点击之后选择相应的版本控制工具方法2:Setting中Version Cont ...
-
java基本的要点
我想告诉大家的不是什么java基本要点,只是对初学者的一点忠告,本人是从八维学校亲身经历过的学生,要想学好并且快速了解java,那你首先必须有英语底子,没有英语底子,几个单词都不会的,我觉得还是放弃学 ...
-
看Instgram课程分享笔记
第一课:相信直觉.乐于尝试.专注于事而不是陷于创业社交之类的外围活动 第二课:用工程实践解决问题,结交技术朋友 第三课:最难的是找到要解决的问题,用简单方法解决简单问题 第四课:早失败,常失败,由失败 ...
-
OpenCV__elemSize
elemSize 矩阵一个元素占用的字节数,例如:type是CV_16SC3,那么elemSize = 3 * 16 / 8 = 6 bytes elemSize1 矩阵元素一个通道占用的字节数,例如 ...
-
GO语言基础之method
方法 method 1. Go 中虽没有 class,但依旧有 method 2. 通过显示说明 receiver 来实现与某个类型的组合 3. 只能为同一个包中的类型定义方法 4. Receiver ...