Java进阶之路【代码篇】——《CleanCode》编程规则精编(5)对象和数据结构
2017-08-22 21:58
411 查看
对象和数据结构
数据抽象
使用合适的模型去抽象数据eg
// bad public class Point { public double x; public double y; } // good public interface Point { private double x; private double y; private Point() { // private constractor } void Point(double x, double y) { this.x = x; this.y = y; } public static Point setAPoint(double x, double y) { return new Point(double x, double y); } }
保证了对Point位置设置的原子性
数据、对象的反对称性
过程式代码(使用数据结构的代码)便于在不改动既有数据结构的前提下添加新函数。面向对象代码便于在不改动函数的前提下添加新类。过程是代码难以添加新数据结构,因为必须修改所有函数。面向对象代码难以添加新函数,因为必须修改所有类。
德墨忒耳律
模块不应了解它所操作对象的内部情形。对象隐藏数据,暴露操作。德墨忒耳律认为,类C的方法f只应调用以下对象的方法
- C
- 由f创建的对象
- 作为参数传递给f的对象
- 由C的实体变量持有的对象
- 方法不应调用由任何函数返回的对象的方法
混杂
绝对不要把对象结构与数据结构混杂在一起数据传送对象
DTO Data Transfer Objects只有公共变量、没有函数的类
效果与目前最常见的Bean类似
相关文章推荐
- Java进阶之路【代码篇】——《CleanCode》编程规则精编(10) 并发
- Java进阶之路【代码篇】——《CleanCode》编程规则精编(8) 类
- Java进阶之路【代码篇】——《CleanCode》编程规则精编(7) 边界、单元测试
- Java进阶之路【代码篇】——《CleanCode》编程规则精编(9) 系统、迭进
- Java进阶之路【代码篇】——《CleanCode》编程规则精编(1)命名
- Java进阶之路【代码篇】——《CleanCode》编程规则精编(6)错误处理
- Java进阶之路【代码篇】——《CleanCode》编程规则精编(4)格式
- Java进阶之路【代码篇】——《CleanCode》编程规则精编(2)函数
- Java进阶之路【代码篇】——《CleanCode》编程规则精编(3)注释
- 【Java并发编程】之十六:深入Java内存模型——happen-before规则及其对DCL的分析(含代码)
- 如何编出健壮的代码 java编程30条规则
- Java并发编程规则:无状态对象永远是线程安全的
- Java并发编程规则:有状态的线程安全对象在线程池中使用不一定就是线程安全的
- java并发编程学习之一段简单代码证明synchronized锁的是对象
- 【Java并发编程】之十六:深入Java内存模型——happen-before规则及其对DCL的分析(含代码)
- Java并发编程规则:不可变对象永远是线程安全的
- IntelliJ IDEA平台下JNI编程(四)—本地C代码访问JAVA对象
- 【Java并发编程】:深入Java内存模型——happen-before规则及其对DCL的分析(含代码)
- 如何编出健壮的代码,java编程30条规则(一)
- Java二叉树的编程实现(数据结构)和正则表达式代码实现