Java 老司机总结的代码风格指南(下)
前言
之前我们讲了代码风格中函数、类多大才合适,一行代码多长最合适和善用空行分割单元块,今天我们继续讲解代码风格。
1. 四格缩进还是两格缩进?
“PHP 是世界上最好的编程语言?代码换行应该四格缩进还是两格缩进?” 这应该是程序员争论得最多的两个话题了。据我所知,Java 语言倾向于两格缩进,PHP 语言倾向于四格缩进。至于到底应该是两格缩进还是四格缩进,我觉得这个取决于个人喜好。只要项目内部能够统一就行了。
当然,还有一个选择的标准,那就是跟业内推荐的风格统一、跟著名开源项目统一。当我们需要拷贝一些开源的代码到项目里的时候,能够让引入的代码跟我们项目本身的代码,保持风格统一。
不过,我个人比较推荐使用两格缩进,这样可以节省空间。特别是在代码嵌套层次比较深的情况下,累计缩进较多的话,容易导致一个语句被折成两行,影响代码可读性。
除此之外,值得强调的是,不管是用两格缩进还是四格缩进,一定不要用 tab 键缩进。因为在不同的 IDE 下,tab 键的显示宽度不同,有的显示为四格缩进,有的显示为两格缩进。如果在同一个项目中,不同的同事使用不同的缩进方式(空格缩进或 tab 键缩进),有可能会导致有的代码显示为两格缩进、有的代码显示为四格缩进。
2. 大括号是否要另起一行?
左大括号是否要另起一行呢?这个也有争论。据我所知,PHP 程序员喜欢另起一行,Java 程序员喜欢跟上一条语句放到一起。具体代码示例如下所示:
// PHPclass ClassName{public function foo(){// method body}}// Javapublic class ClassName {public void foo() {// method body}}
我个人还是比较推荐,将括号放到跟语句同一行的风格。理由跟上面类似,节省代码行数。但是将大括号另起新的一行的方式,也有它的优势。这样的话,左右括号可以垂直对齐,哪些代码属于哪一个代码块,更一目了然。
不过,还是那句话,大括号跟上一条语句在同一行,还是另起新的一行,只要团队统一、业内统一、跟开源项目看齐就好了,没有绝对的优劣之分。
3. 类中成员的排列顺序
在 Java 类文件中,先要书写类所属的包名,然后再罗列 import 引入的依赖类。在 Google 编码规范中,依赖类按照字母序从小到大排列。
在类中,成员变量排在函数的前面。成员变量之间或函数之间,都是按照 “先静态(静态函数或静态成员变量)、后普通(非静态函数或非静态成员变量)” 的方式来排列的。除此之外,成员变量之间或函数之间,还会按照作用域范围从大到小的顺序来排列,先写 public 成员变量或函数,然后是 protected 的,最后是 private 的。
不过,不同的编程语言中,类内部成员的排列顺序可能会有比较大的差别。比如 C++ 中,成员变量会习惯性放到函数后面。除此之外,函数之间的排列顺序,会按照刚刚我们提到的作用域的大小来排列。实际上,还有另外一种排列习惯,那就是把有调用关系的函数放到一块。比如,一个 public 函数调用了另外一个 private 函数,那就把这两者放到一块。
重点回顾
1. 四格缩进还是两格缩进?
我个人比较推荐使用两格缩进,这样可以节省空间,特别是在代码嵌套层次比较深的情况下。除此之外,值得强调的是,不管是用两格缩进还是四格缩进,一定不要用 tab 键缩进。
2. 大括号是否要另起一行?
我个人还是比较推荐将大括号放到跟上一条语句同一行的风格,这样可以节省代码行数。但是,将大括号另起一行,也有它的优势,那就是,左右括号可以垂直对齐,哪些代码属于哪一个代码块,更加一目了然。
3. 类中成员的排列顺序
在 Google Java 编程规范中,依赖类按照字母序从小到大排列。类中先写成员变量后写函数。成员变量之间或函数之间,先写静态成员变量或函数,后写普通变量或函数,并且按照作用域大小依次排列。
今天讲到所有的代码风格都没有对错和优劣之分,只要能在团队、项目中统一即可,不过,最好能跟业内推荐的风格、开源项目的代码风格相一致。
有收获?老铁们可以来我的官网:java实验室
关注我的公众号,你想要的Java知识文章都有:
Java 老司机总结的代码风格指南(下)相关推荐
- Python 代码风格指南谷歌版
非常感谢我们的忠实读者 shendeguize,在后台留言告诉我,已经翻译了<谷歌Python代码风格指南> ,大家这样相互帮助,感觉真是太好. Update: 2020.01.31 Tr ...
- 数据简化社区Google和Linux代码风格指南(附PDF公号发“代码风格”下载)
数据简化社区Google和Linux代码风格指南(附PDF公号发"代码风格"下载) 秦陇纪2019代码类 数据简化DataSimp 昨天 数据简化DataSimp导读:数据简化社区 ...
- python代码风格指南_记录Python代码:完整指南
python代码风格指南 Welcome to your complete guide to documenting Python code. Whether you're documenting a ...
- 汇编程序员之代码风格指南
Style Guidelines for Assembly Language Programmers 汇编程序员之代码风格指南 作者:Randall Hyde http://webster.cs. ...
- Google 内部的 Python 代码风格指南(译)
微信搜索逆锋起笔关注后回复编程pdf 领取编程大佬们所推荐的 23 种编程资料! 来自:Why GitHub? 链接:https://github.com/shendeguize/GooglePyth ...
- Google内部 Python 代码风格指南(中文版)
文末有干货 "Python高校",马上关注 真爱,请置顶或星标 这是一位大佬翻译的Google Python代码风格指南,很全面.可以作为公司的code review 标准,也可以 ...
- 快快快收藏!!Google内部Python代码风格指南(中文版)
????????关注后回复 "进群" ,拉你进程序员交流群???????? 来源丨菜鸟学Python 这是一位大佬翻译的Google Python代码风格指南,很全面.可以作为公司 ...
- Google Python代码风格指南
谷歌Python代码风格指南 中文翻译 你好,我是zhenguo 这是关注我的一位粉丝翻译的Google Python代码风格指南,很全面.可以作为公司的code review 标准,也可以作为自己编 ...
- vue前端代码风格指南
vue前端代码风格指南 参考网址: https://mp.weixin.qq.com/s/ejqSWUNBlADbOXbNcy6TNg 文章目录 vue前端代码风格指南 一.命名规范 1.1 项目文件 ...
最新文章
- P2698 [USACO12MAR]花盆Flowerpot
- 11 Python Pandas tricks that make your work more efficient
- 同态加法_同态—当旧趋势突然变酷时
- 周报_2013第03周(2013/01/13-2013/01/19)
- 硬件加速下webview切换闪屏_网页渲染性能优化 —— 性能优化下
- unity如何让canvas总是显示在所有层的最上方?
- 麦克风的喧响伪原创工具
- linux c获取内存和cpu使用率,linux c程序获取cpu使用率及内存使用情况
- 私活后的 WPF 设计经验总结
- Word VBA设置所有图表宽度并居中
- iptables实现网卡包的转发
- Emmet For Faster HTML CSS Workflow by Edwin Diaz
- 序号 html ol自动缩进,ol自定义序号样式的方法
- 无需SVIP,两步实现百度网盘不限速
- audio实现歌词同步
- 你真的了解IP地址吗?
- leetcode--给房子涂色III
- 手把手教你做第一个RPA机器人流程
- 去除噪声 matlab 论文,基于MATLAB的语音去噪开题报告
- Java 根据网络地址URL获取文件
热门文章
- Halcon之畸变标定Grid-Rectification
- 网银,快钱,支付宝的区别
- 时间序列的平稳性检验与随机性检验
- import mtcnn cannot import name ‘get_config’ from ‘tensorflow.python.eager.context’
- 基于再生龙(clonezilla)的Ubuntu镜像的备份和还原
- 视频软解码和硬解码的区别
- Stetman读peper小记:Defense-Resistant Backdoor Attacks Against DeepNeural Networks in Outsourced Cloud
- debian编译php mysql5.6_在Debian/Ubuntu上免编译安装PHP7.2~5.6
- php将时间存入mysql_将php日期转换为mysql形式
- fastboot刷机步骤