前言

之前我们讲了代码风格中函数、类多大才合适,一行代码多长最合适和善用空行分割单元块,今天我们继续讲解代码风格。

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 老司机总结的代码风格指南(下)相关推荐

  1. Python 代码风格指南谷歌版

    非常感谢我们的忠实读者 shendeguize,在后台留言告诉我,已经翻译了<谷歌Python代码风格指南> ,大家这样相互帮助,感觉真是太好. Update: 2020.01.31 Tr ...

  2. 数据简化社区Google和Linux代码风格指南(附PDF公号发“代码风格”下载)

    数据简化社区Google和Linux代码风格指南(附PDF公号发"代码风格"下载) 秦陇纪2019代码类 数据简化DataSimp 昨天 数据简化DataSimp导读:数据简化社区 ...

  3. python代码风格指南_记录Python代码:完整指南

    python代码风格指南 Welcome to your complete guide to documenting Python code. Whether you're documenting a ...

  4. 汇编程序员之代码风格指南

    Style Guidelines for Assembly Language Programmers 汇编程序员之代码风格指南 作者:Randall Hyde   http://webster.cs. ...

  5. Google 内部的 Python 代码风格指南(译)

    微信搜索逆锋起笔关注后回复编程pdf 领取编程大佬们所推荐的 23 种编程资料! 来自:Why GitHub? 链接:https://github.com/shendeguize/GooglePyth ...

  6. Google内部 Python 代码风格指南(中文版)

    文末有干货 "Python高校",马上关注 真爱,请置顶或星标 这是一位大佬翻译的Google Python代码风格指南,很全面.可以作为公司的code review 标准,也可以 ...

  7. 快快快收藏!!Google内部Python代码风格指南(中文版)

    ????????关注后回复 "进群" ,拉你进程序员交流群???????? 来源丨菜鸟学Python 这是一位大佬翻译的Google Python代码风格指南,很全面.可以作为公司 ...

  8. Google Python代码风格指南

    谷歌Python代码风格指南 中文翻译 你好,我是zhenguo 这是关注我的一位粉丝翻译的Google Python代码风格指南,很全面.可以作为公司的code review 标准,也可以作为自己编 ...

  9. vue前端代码风格指南

    vue前端代码风格指南 参考网址: https://mp.weixin.qq.com/s/ejqSWUNBlADbOXbNcy6TNg 文章目录 vue前端代码风格指南 一.命名规范 1.1 项目文件 ...

最新文章

  1. P2698 [USACO12MAR]花盆Flowerpot
  2. 11 Python Pandas tricks that make your work more efficient
  3. 同态加法_同态—当旧趋势突然变酷时
  4. 周报_2013第03周(2013/01/13-2013/01/19)
  5. 硬件加速下webview切换闪屏_网页渲染性能优化 —— 性能优化下
  6. unity如何让canvas总是显示在所有层的最上方?
  7. 麦克风的喧响伪原创工具
  8. linux c获取内存和cpu使用率,linux c程序获取cpu使用率及内存使用情况
  9. 私活后的 WPF 设计经验总结
  10. Word VBA设置所有图表宽度并居中
  11. iptables实现网卡包的转发
  12. Emmet For Faster HTML CSS Workflow by Edwin Diaz
  13. 序号 html ol自动缩进,ol自定义序号样式的方法
  14. 无需SVIP,两步实现百度网盘不限速
  15. audio实现歌词同步
  16. 你真的了解IP地址吗?
  17. leetcode--给房子涂色III
  18. 手把手教你做第一个RPA机器人流程
  19. 去除噪声 matlab 论文,基于MATLAB的语音去噪开题报告
  20. Java 根据网络地址URL获取文件

热门文章

  1. Halcon之畸变标定Grid-Rectification
  2. 网银,快钱,支付宝的区别
  3. 时间序列的平稳性检验与随机性检验
  4. import mtcnn cannot import name ‘get_config’ from ‘tensorflow.python.eager.context’
  5. 基于再生龙(clonezilla)的Ubuntu镜像的备份和还原
  6. 视频软解码和硬解码的区别
  7. Stetman读peper小记:Defense-Resistant Backdoor Attacks Against DeepNeural Networks in Outsourced Cloud
  8. debian编译php mysql5.6_在Debian/Ubuntu上免编译安装PHP7.2~5.6
  9. php将时间存入mysql_将php日期转换为mysql形式
  10. fastboot刷机步骤