Java进阶之路【代码篇】——《CleanCode》编程规则精编(5)对象和数据结构

14 篇文章 0 订阅
11 篇文章 0 订阅

对象和数据结构

数据抽象

使用合适的模型去抽象数据

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类似

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值