转自:http://yifeng.studio/2017/06/30/coding-with-code-style/

Java 代码规范,你应该知道的一些工具和用法

2017-06-30

从事编程这个行业,你一定被别人说过或者说过别人这句话:代码要规范!求职面试时也能从 JD 上看到这个要求:要有良好的编程习惯。其实都是在讲代码规范(Code Style)这件事情。

每个人都有自己的编程习惯,比如你喜欢 2 个空格数量的行前缩进,而他喜欢 4 个空格数量的行前缩进;你喜欢左大括号位于行尾出,而他喜欢另起一行。等等,这些习惯都没有孰优孰劣之分,只是每个人长期以往形成的个人编程爱好而已。

当你独立开发一个项目时,谈不上代码规范,按照你个人的编程习惯即可。但是,如果是多人协作、共同开发一个项目,如果没有统一的代码规范的话,项目中的每个人都按照自己的习惯率性而为,就会导致整个项目的代码看上去杂乱无章,可读性非常差,并且持续增加后续的维护成本。

所以,在团队协作时,常常会涉及到代码规范。通常,一个公司也会拥有一份统一的代码规范。事实上,根据经验,使用代码规范在一定程度上还能减少 BUG 数量,降低错误率。本篇文章,我们就来讲讲如何在 Android 项目中使用代码规范,主要是 Java 语言的代码规范。

Code Style


代码规范也是因人而异的,或者说因公司而异。之前,我工作的公司,有领导专门使用 word 文档编写一份代码规范,然后同事们仔细阅读,谨记于心,在 Coding 时多加注意。事实上,可以利用 IDE 将代码规范文件配置其中。这样,可以减少大部分凭借记忆解决的难题,实现自动化规范。

关于代码规范文件,一些知名互联网公司也公开有各自的代码规范,这些都是我们可以直接借鉴、拿来使用的优秀资源,当然你也可以再根据自己的情况作出修改。比较出名的有:

这里我们拿 Google 公司提供的 Java 语言代码规范为例,简单描述一下如何使用 Android Studio 配置 Code Style。

首先下载 intellij IDE 对应的配置文件到本地电脑上:

intellij-java-google-style.xml

该文件内容都是一些 xml 配置,这里不妨截取一部分看看:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="UTF-8"?>
<code_scheme name="GoogleStyle">
<option name="OTHER_INDENT_OPTIONS">
<value>
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="4" />
<option name="TAB_SIZE" value="2" />
<option name="USE_TAB_CHARACTER" value="false" />
<option name="SMART_TABS" value="false" />
<option name="LABEL_INDENT_SIZE" value="0" />
<option name="LABEL_INDENT_ABSOLUTE" value="false" />
<option name="USE_RELATIVE_INDENTS" value="false" />
</value>
</option>
 
......
 
</code_scheme>

打开 Android Studio,在 Preferences 界面中找到 Code Style 菜单,选择 Java 语言,点击 Manage 按钮,Import 前面下载好的 xml 配置文件。然后在 Scheme 下拉列表中便可以看到 GoogleStyle 选项,切换即可:

之后,在 Coding 过程中,使用一些快捷键操作,比如格式化、TAB 键等,就会自动按照这份代码规范执行。当然,你也可以修改这份代码规范,前提是你要知道该规范的内容意义。关于这个,Google 也提供有一份在线文档,可供参考:

Google Java Style Guide

代码格式化


有了代码规范,便可以直接使用快捷键格式化当前文件的代码,Mac 上默认快捷键为:

Option + Command + L

你也可以直接选择整个项目或某个目录,右键点击 Reformat Code 选项,批量格式化。

当然,还可以下载 Google 提供的格式化 Jar 包,使用命令行工具对指定文件进行格式化操作。GitHub 地址为:

google-java-format

举个例子,批量格式化当前目录下的所有 Java 文件(实际使用时注意修改 jar 文件目录):

1
find . -name "*.java" -exec java -jar ~/tools/google-java-format-1.3-all-deps.jar -r {} \;

Check Style


有了代码规范和格式化操作,虽然一定程度上能够借助 IDE 规范化我们的代码,但是有些部分还是不能完全约束开发人员。比如,变量命名,你还是可以随意命名;每行代码字符个数你也可以随意书写。这些主观人为的操作,遵守不遵守规范,还是在于你个人。

那么,有没有一种办法检查你写完的代码是否符合某些规范要求呢?答案是肯定的。CheckStyle,自动帮你检查代码是否符合规范的一种插件化工具。

CheckStyle 工具可以帮助你检查 Javadoc 注视文档是否符合规范(比如首行必须以英文句号结束),变量、函数等命名是否符合给定正则表达式,括号、大括号前后留白是否符合规范,等等,这些规范要求都是可以在 xml 文件中自由约定设置的。

CheckStyle 的 GitHub 下载地址为:

https://github.com/checkstyle/checkstyle

也可以使用 Android Studio 在线安装的方式搜索安装:

CheckStyle 的使用需要配合着 xml 检查文件。Google 公司也提供有一份对应 Java 代码规范的检查规则文件和文档说明,检查文件的下载地址请点击:

google_checks.xml

同样的,你也可以按照自己的需要随意修改。不过最好和你前面使用的 Code Style 文件保持一致。

然后你就可以将这份检查规则文件配置给 CheckStyle 工具,也是在 Preferences 窗口中配置( IDE 中默认也有一套 CheckStyle 规则):

重启 IDE,然后便可以在底部菜单栏中看到 CheckStyle 操作选项:

打开 CheckStyle 窗口,选择前面配置的 google-checkstyle 检查规则文件,点击左边的 Run 按钮,便可以对当前打开的 Java 文件检查规范:

可以看到,不符合规范的地方都有对应行数等提示信息,可以选择并逐一修改。修改完毕,再次执行 Run 操作检查时,如果完全符合 CheckStyle 的话,看到的就是 no problems 提示:

CheckStyle 插件工具的好处是,你能够直接在 IDE 中对项目中的某个 Java 文件检查规范,并且从错误信息处直接定位到相关代码位置,从而很方便地作出修改。还有一个好处是,你可以在编写代码时,实时得到 CheckStyle 的检测提示,如:

可以看到,在编辑区直接提示,方法中的左大括号前面需要使用空格与其他内容隔开。这样,我们在 Coding 的时候就能随时知道当前代码是否符合规范,非常方便。

而 CheckStyle 插件工具不好的地方在于,其不能做到对多个文件批量检查。比如,我想知道某个项目或者某个目录下的 Java 文件是否符合规范,插件就做不到。这个时候,你就可以使用命令行工具了。

下载 CheckStyle 提供的 Jar 包及 xml 规则文件,然后打开命令行工具,输入检查命令即可。如:

1
java -jar ~/tools/checkstyle-7.8.2-all.jar -c ~/tools/google_checks.xml MainActivity.java

命令行工具的弊端在于没有定位源码的功能,你只能看到当前文件哪里是否符合规范。有关 CheckStyle 的更多使用详情,请参考 在线文档

事实上,CheckStyle 工具非常适合团队协作开发。比如,管理员可以将 CheckStyle 部署在 SVN 或者 Git 的远程仓库所在的服务器上。如果发现 push 或者 merge 的代码不符合这个规范要求,将拒绝接受。这样,便可以强制团队中的每一个开发人员严格按照规范修改自己的代码,使得整个项目或整个公司的项目代码保持统一的风格。

开源规范


除了前面我们说到的 Google 公司提供的 Check 检查规则文件,还有一些其他知名公司开源的内容可供选择:

其他工具


静态代码分析工具当然不止 CheckStyle 这一个,提高代码质量你还可以使用这些工具:

诸如此类,选择一款适合你自己的就好。工具只是一种手段,提高团队协作效率、保证代码质量才是我们的终极目的。

参考链接


关于代码规范和相关工具的使用,你还可以阅读这些文章:


本文由 亦枫 创作并首发于 亦枫的个人博客 ,同步推送微信公众号:安卓笔记侠(NiaoTech)。

欢迎各种形式地交流与转载,注明作者、出处和微信公众号即可。

本文标题为: Java 代码规范,你应该知道的一些工具和用法

本文链接为:http://yifeng.studio/2017/06/30/coding-with-code-style/

请我喝咖啡,资瓷资瓷~

支付宝
微信

Java 代码规范,你应该知道的一些工具和用法(转)的更多相关文章

  1. 转!!Java代码规范、格式化和checkstyle检查配置文档

    为便于规范各位开发人员代码.提高代码质量,研发中心需要启动代码评审机制.为了加快代码评审的速度,减少不必要的时间,可以加入一些代码评审的静态检查工具,另外需要为研发中心配置统一的编码模板和代码格式化模 ...

  2. 【转】Java代码规范

    [转]Java代码规范 http://blog.csdn.net/huaishu/article/details/26725539

  3. Java代码规范

    Java代码规范 本Java代码规范以SUN的标准Java代码规范为基础,为适应我们公司的实际需要,可能会做一些修改.本文档中没有说明的地方,请参看SUN Java标准代码规范.如果两边有冲突,以SU ...

  4. Java代码规范、格式化和checkstyle检查配置文档

    http://www.blogjava.net/amigoxie/archive/2014/05/31/414287.html 文件下载: http://files.cnblogs.com/files ...

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

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

  6. MyEclipse中阿里JAVA代码规范插件(P3C)的安装及使用

    JAVA代码规范插件(P3C)是阿里巴巴2017年10月14日在杭州云栖大会上首发的,使之前的阿里巴巴JAVA开发手册正式以插件形式公开走向业界.插件的相关信息及安装包都可以在GitHub(https ...

  7. JAVA代码规范笔记(上)

    本文为<code conventions-150003>(JAVA代码规范)笔记. 文件组织 1.超过2000行代码的源文件将会比较难以阅读,应该避免. 2.每个Java源文件都包含单一的 ...

  8. IDEA中阿里JAVA代码规范插件(P3C)的安装及使用

    JAVA代码规范插件(P3C)是阿里巴巴2017年10月14日在杭州云栖大会上首发的,使之前的阿里巴巴JAVA开发手册正式以插件形式公开走向业界.插件的相关信息及安装包都可以在GitHub(https ...

  9. 阿里官方Java代码规范标准

    阿里官方Java代码规范标准<阿里巴巴Java开发手册 终极版 v1.3.0>下载 https://www.cnblogs.com/han-1034683568/p/7680354.htm ...

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

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

随机推荐

  1. Flutter日曆國際化

    Flutter自带的日期选择器是showDatePicker,时间选择器是showTimePicker. 这两个选择器默认的显示效果都是英文的,我们是在中国,那么就需要将其显示成中文版的,这就涉及到F ...

  2. Python爬虫之抓取豆瓣影评数据

    脚本功能: 1.访问豆瓣最受欢迎影评页面(http://movie.douban.com/review/best/?start=0),抓取所有影评数据中的标题.作者.影片以及影评信息 2.将抓取的信息 ...

  3. Java Web学习总结(9)学习总结-JSTL

    一,JSTL概述 JSTL(JSP Standard Tag Library),JSP标准标签库,可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能.jstl出现的目的同el一样也是要代替jsp页 ...

  4. 08-图8 How Long Does It Take(25 分)邻接表和队列

    Given the relations of all the activities of a project, you are supposed to find the earliest comple ...

  5. 【靶场练习_sqli-labs】SQLi-LABS Page-4 (Challenges)

    Less-54: ?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where tabl ...

  6. 华为交换机telnet配置

    1.在路由器上和交换机相连的借口上配置一个IP地址:比如192.168.1.1 24 2.在交换机上配置如下:<switch>system-view[switch]vlan 10[swit ...

  7. 20175213 2018-2019-2 《Java程序设计》第11周学习总结

    教材学习内容总结 URL类是java.net包中的一个重要的类,URL的实例封装着一个统一资源定位符(Uniform Resource Locator),使用URL创建对象的应用程序称作客户端程序 U ...

  8. wsl中加载git之后,发现文件是修改状态

    查看git status,发现所有文件都被修改. git diff文件查看,发现是行尾的问题导致的. https://github.com/Microsoft/WSL/issues/184 在wsl里 ...

  9. Checking out pull requests locally

    https://help.github.com/en/articles/checking-out-pull-requests-locally https://github.com/betaflight ...

  10. 建站手册-浏览器信息:挪威的 Opera 浏览器

    ylbtech-建站手册-浏览器信息:挪威的 Opera 浏览器 1.返回顶部 1. http://www.w3school.com.cn/browsers/browsers_opera.asp 2. ...