编码规范+《数学之美》第8章读后感
代码规范
格式规范
- 大括号的使用
- 如果是大括号内为空,则简洁地写成{}即可,不需要换行
- 如果是非空代码块则
- 左大括号前不换行,左大括号后换行
- 右大括号前换行,右大括号后还有else等代码则不换行,表示终止右大括号后换行
- if / for / while / switch / do等保留字与左右括号之间都必须加空格
- 任何运算符左右必须加一个空格(运算符包括赋值运算符=、逻辑运算符&&、加减乘除符号、三目运行符等)
- 缩进采用4个空格,不使用Tab字符
注:如果使用Tab缩进,必须设置1个Tab为4个空格
IDEA设置Tab为4个空格时,勿勾选Use tab character;而在eclipse中,须勾选insert spaces for tabs
1 public static void main(String[] args) { 2 //缩进四个空格 3 String say = "hello"; 4 //运算符的左右必须有一个空格 5 int flag = 0; 6 //关键词if与括号之间必须有一个空格,括号内f与0分别与左括号,右括号不需要空格 7 if (flag == 0) { 8 System.out.println(say); 9 } 10 11 //左大括号前加空格不换行,左大括号后换行 12 if (flag == 1) { 13 System.out.println("world"); 14 //右大括号前换行,右大括号后有else不换行 15 } else { 16 System.out.println("ok"); 17 } 18 }
- 单行字符数限制不超过120个,超出需要换行,换行时遵循如下原则
- 第二行相对第一行缩进4个空格,从第三行开始,不再继续缩进
- 运算符与下文一起换行
- 方法调用的点符号与下文一起换行
- 在多个参数超长,逗号后进行换行
- 在括号前不要换行
- 方法参数在定义和传入时,多个参数逗号后边必须加空格
- 正例:method("a", "b", "c"); 中实参的 "a", 后边必须要有一个空格
命名规范
- 代码中的命名均不以下划线或美元符号开始,也不以下划线或美元符号结束
- 反例:_name / $Object / name_ / Object$
- 代码中的命名不应使用拼音与英文混合的方式,也不应直接使用中文的方式
- 反例:DaZhePromotion[打折] / getPingfenByName()[评分] / int某变量= 3
- 正例:alibaba / taobao / youku / hangzhou等国际通用的名称,可视同英文
- 类名使用UpperCamelCase风格,遵从驼峰形式
- 正例:MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion
- 领域模型的相关命名除外:DO / BO / DTO / VO等
- 方法名、参数名、成员变量、局部变量都统一使用lowerCamelCase风格,遵从驼峰形式
- 正例:localValue / getHttpMessage() / inputUserId
- 常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长
- 正例: MAX_STOCK_COUN
- 中括号是数组类型的一部分,数组定义如下:String[] args;
- 包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词;包名统一使用单数形式,但是类名如果有复数含义,类名可以使用复数形式
- 正例:应用工具类包名为com.alibaba.open.util、类名为MessageUtils
- 不要完全不规范的缩写,避免望文不知义
- 反例:AbstractClass“缩写”命名成AbsClass
常量定义
- 不要出现任何魔法值(即未经定义的常量)直接出现在代码中
- long或者Long初始赋值时,必须使用大写的L,不能是小写的l,小写容易跟数字1混淆,造成误解
注释规范
- 方法内部单行注释,在被注释语句上方另起一行,使用 // 注释;方法内部多行注释使用 /* */ 注释,注意与代码对齐
- 类、类属性、类方法的注释使用/**内容*/格式,不使用//xxx方式
《数学之美》第8章读后感
作者在本章一开始便说明了这本书是想写给大众看的,这说明即使没有很深厚的数学学习底蕴的人也能看懂,我看过这一章后就是这么觉得的,我还觉得作者不仅把这些数学相关的事情讲的特别易懂,还讲的挺有趣的。
在本章开始处我收获到了两句道理,一是原文“只有掌握了搜索的本质和精髓才能永远游刃有余”,我的理解是看事情要看本质,掌握了事情的本质,什么问题都比较容易解决了。二是原文“真正做好一件事没有捷径”,我觉得现实中事事其实都在说明着这个道理!做房子、学习我们都要从基础开始,一点一点的积累,最后完成。
其后作者开始了讲本章重点内容之一的布尔代数。作者将二进制运算联系到古代的阴阳学说我是从来都没想过的,不过确实很合理,这进一步就会让想到:阴阳两极,是非黑白。这也就讲到了布尔运算。作者通过举简单易懂的例子来说明布尔运算,我觉得原来会让人感觉枯燥的布尔运算瞬间就形象生动起来了,更有趣了!
接着作者通过布尔运算慢慢引出另一个重点内容——搜索引擎。其实之前学习数据结构的时候就对搜索这方面的编程思维有所了解,当时的理解是通过关键字匹对,如果能匹配的就能搜索到,但是当时确实没想到是二进制在里面起来作用,没想到是通过二进制,也就是布尔判断匹不匹配。其实我这就是没有掌握事情的本质吧,本来计算机就是把人类的信息转换成二进制在计算机中进行计算,然后再转换成人类可以认识、接收的形式显示出来。二进制就是桥梁即布尔代数在其中发挥了重要的作用。
其实我们的生活处处离不开数学,计算机这些东西的创造也就是依赖了数学,还有就像这布尔代数,让二进制既能计数,又能进行逻辑判断,让搜索更方便,它将数学和逻辑合二为一,给更多的问题提供了可能更优的解决办法。
最后还是很想说这本书的作者真的很厉害,他写的这些内容不仅非常有逻辑,而且关联性强,让你自然而然的读完了。我想我会继续读完这本书的
2021-09-12