Effective-Kotlin 《Effective Kotlin》的一书的翻译和代码 代码 ... ... 文章 Item1:限制可变性 Item2:最小化变量的作用域 Item31:定义文档的契约 Item45:避免不必要的对象创建 Item46:写带函数类型参数的函数的时候使用inline修饰符 Item47:考虑使用inline类 Item48:消除过时的对象引用 Item3:尽快消除平台类型 Item4: 不要暴露推断的类型 Item6:更倾向于使用标准exception,而不是自定义exception Item5:明确你对参数和状态的期望 Item7:当可能缺少返回值时,首选null返回值或者Failure返回值 Item8:恰当的处理空值 Item9:使用use关闭资源(简) Item10:编写单元测试(简) Item11:可读性设计 Item12:操作符的含义应该和它的函数名保持一致 Item13:避免返回或者操作Unit?(简) Item14:当变量类型不清楚的时候,请明确它的类型(简) Item15:考虑显示的引用接收者receiver Item16:属性应该描述状态,而不是行为 Item17:考虑具名参数(简) Item18:遵守编码规范(简) Item19:不要重复知识(简) Item20:不要重复常用算法(简) Item21:使用属性委托来提取常见的属性模式(缺) Item23:避免参数名和成员变量名重复(简) Item24:逆变和协变(简) Item25:不同平台之间通过提取通用方法来重用(简) Item26:每个函数应该按照 单层抽象(single level of abstraction)的规则编写(简) Item28:使API稳定(简) Item29:考虑包裹外部API(简) Item30:最小化元素的可见性(简) Item32:遵守抽象规范(简) Item33:考虑工厂方法代替构造函数 Item34:考虑给构造函数的参数设置默认值(简) Item35:考虑为负责的对象创建定义一个DSL Item36:组合优于继承(简) Item37:使用data修饰符来修饰数据集(简) Item38:使用函数类型来替代接口传递操作(简) Item39:更喜欢类层次结构而不是标记类(缺) Item40:遵守equals的约定(简) Item41:遵守hashcode的约定(简) Item42:遵守compareTo的约定(简) Item43:考虑提取api中的不必要部分到extensions中(简) Item49:数据多次操作的时候使用Sequence(简) Item50:限制collection的操作次数(简) Item51:考虑使用原始的数组来应对需要高性能的情况(简) Item52:考虑使用可变的collections(缺) Item44:避免在类中定义扩展函数(缺) Item27:使用抽象来保护代码免受更改 Item22:在实现通用算法的时候使用泛型(简)