类和接口的一些优秀习惯
来源:互联网 发布:微距摄影师500px知乎 编辑:程序博客网 时间:2024/06/05 23:56
几个规则:
使类和成员可访问性最小化:尽可能使每个类或者每个成员不被外界访问,只暴露不得不暴露的信息。所有的域应该不是公有的
能private的尽量private。
在公有类中使用访问方法而非公有域:如果类是包级私有的或者私有的嵌套类,那么暴露数据域没有本质的问题,但最好还是严谨一些
即使数据域是final的,暴露出去也存在潜在的危险
使可变性最小化:尽量使用不可变类。1.不提供任何修改对象的方法 2.保证类不会被扩展 3.所有的域都是final的 4.所有的域都是私有的 5.确保对任何可变的互斥访问
返回一个值得时候,new 一个新的类而不是改变对象的值
使用不可变类的坏处是,对于不同的值必须创建新的对象,所以一些重复使用的值最好现在类的内部静态定义好static final。
注意添加序列化的方法
如果一个类不能做成不可变的,也应该尽量限制他的可变性
接口应该只用于定义类型,不要创建一个只定义静态常量的接口,这样会把实现细节泄露到该类导出的api中。在将来类的开发过程中还回出现许多不必要的麻烦
工具类是一个合理的替代方法:public class A{
private A();
public static final double B = 1.0;
}
用函数对象表示策略。一般做法是实现函数式接口。这个思想在java8中被大量用到。
复合优先于继承
继承打破了封装性,最好不要继承一个包外的类。否则,如果超类在开发的时候有一些自己的约定,我们是不知道的,继承会有潜在的危险。同时,如果超类在后续开发中,与子类有了冲突,也会导致不良的后果。只有在两个类有着严格的从属关系时,才应该选择继承。通常发生在同一个程序员开发自己的java包的时候。
一个好的替代方法是复合:
Effective Java86页例子
接口好于抽象类的原因是,类只能继承一个父类,但是却可以实现多个接口。而且继承会对代码的结构有着严重的限制,而接口却可以提供扁平化的结构。
结合接口和抽象类能够有着完美的效果,骨架类。它通过提供对接口的最简单实现,达到让继承他的子类可以有效地实现接口。而且骨架类并不强制开发者使用它的
方法,因为他是为了继承而设计的。实现了骨架类的子类可以在接口被修改的时候,轻松的实现接口。Effective Java98
对方法的参数进行检查
保护类中的域,进行保护性拷贝,无论是构造器还是返回方法
容器返回不要返回null,返回空的容器
方法重载是静态绑定的,方法覆盖是动态绑定的,要慎用重载,尽量避免重载
- 类和接口的一些优秀习惯
- 《优秀程序员的45个习惯》的一些总结
- 优秀的编程习惯
- 优秀的习惯
- 优秀的习惯
- 优秀的编码习惯
- 优秀程序员的习惯
- 抽象类和接口结合应用——分享前辈一些优秀经验
- 优秀程序员共通的优秀习惯
- 优秀程序员的十个优秀习惯
- 一些简单的道理和习惯
- 优秀项目经理的六个习惯
- 优秀项目经理的六个习惯
- 优秀项目经理的六个习惯
- 优秀DBA的习惯 转
- 优秀程序员的十个习惯
- 优秀程序员的十个习惯
- 优秀程序员的十个习惯
- IOS项目打包除去NSLog
- Java中HBase表分页
- 1086. Tree Traversals Again (25)
- Mysql binlog 日志
- Unity 脚本的生命周期流程
- 类和接口的一些优秀习惯
- 卡号校验
- 消息队列-RabbitMq(PHP)
- 基于Dragonboard 410c 的自动感应调色灯
- android7.1默认背光亮度及编译调试
- [CEOI2008] BZOJ 1391 order-最小割
- Gravity and layout gravity
- 正则表达式(Regular Expression)
- Carte+kettle+mysql性能问题定位分析记录