上篇转帖的blog里面提到了Go的特性,做为编写Java时也能够给本身点编程风格的参考。java
下面是提到的改进编程
下面简单学习和分析一下重点的风格提示,领会Ken和Pike的编程思想:数组
规范的语法(不须要符号表来解析) 垃圾回收(独有) 无头文件 明确的依赖 无循环依赖 常量只能是数字 int和int32是两种类型 字母大小写设置可见性(letter case sets visibility) 任何类型(type)都有方法(不是类型) 没有子类型继承(不是子类) 包级别初始化以及明确的初始化顺序 文件被编译到一个包里 包package-level globals presented in any order 没有数值类型转换(常量起辅助做用) 接口隐式实现(没有“implement”声明) 嵌入(不会提高到超类) 方法按照函数声明(没有特别的位置要求) 方法即函数 接口只有方法(没有数据) 方法经过名字匹配(而非类型) 没有构造函数和析构函数 postincrement(如++i)是状态,不是表达式 没有preincrement(i++)和predecrement 赋值不是表达式 明确赋值和函数调用中的计算顺序(没有“sequence point”) 没有指针运算 内存一直以零值初始化 局部变量取值合法 方法中没有“this” 分段的堆栈 没有静态和其它类型的注释 没有模板 没有异常 内建string、slice和map 数组边界检查
常量只能是数字函数
能够学习。在jdbc编程的时候,咱们把SQL语句提成配置文件。工具
没有子类型继承(不是子类)post
少用继承学习
包级别初始化以及明确的初始化顺序this
注意静态变量和构造函数里面的初始化顺序,Java里面的顺序是和静态变量的在类里面声明的出现顺序有关系的。spa
文件被编译到一个包里指针
少用别人的Jar包,减小DLL噩梦和Jar噩梦。
接口隐式实现(没有“implement”声明)
适当使用Object类型,JFinal就这么作的。效率很高。
嵌入(不会提高到超类)
多聚合,多组合,少继承
方法按照函数声明(没有特别的位置要求)
能静态的方法就都静态化,提升效率。还有能够将静态方法放到一个工具类里面,不初始化此类,直接调用。FastJson就是这样作的。极大提升效率。
方法即函数
同上
接口只有方法(没有数据)
interface里面不声明数据。Java社区以前争论过不少的问题,go给出一个参考答案。
方法经过名字匹配(而非类型)
这个适量使用Object前提。
没有构造函数和析构函数
不要依赖构造函数,能够考虑编写init方法和destory方法,手动获取,释放连接和空间,提升效率。
postincrement(如++i)是状态,不是表达式
慎用++
没有preincrement(i++)和predecrement
不用++
赋值不是表达式
防止最2的==和=混淆
明确赋值和函数调用中的计算顺序(没有“sequence point”)
多用括号。提升计算顺序可读性
内存一直以零值初始化
注意初始化的值。看状况是否要赋值初值。
方法中没有“this”
哈,好东西。很是重要的提醒!!以前我在编程的时候隐隐约约以为this不是很稳当。带来大量的歧义和隐患。
没有模板
Java的模板太恶心。虽然效率低下,可是仍是要使用反射构造器。。。
没有异常
少用异常作处理,能预测的故障尽可能写程序控制。
内建string、slice和map
找一个趁手的string,map工具。没有的话,要本身写一个,我选择guava。
数组边界检查
注意越界,错误。全部的直接对数组的读取以前都要判断数组里面的数值个数,千万别越界。