《代码整洁之道》第六章 对象和数据结构

本文探讨了面向对象编程中数据抽象的重要性,强调隐藏实现以提供更稳定的接口。数据抽象允许在不暴露内部细节的情况下操作对象,而得墨忒耳定律则指导我们如何设计低耦合的代码。数据传送对象(DTO)用于在不同组件间传递数据,而在过程式和面向对象编程中找到适当的平衡是关键。良好的软件设计应根据需求灵活选择对象或数据结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


在这里插入图片描述

概述

将变量设置为私有( private)有一个理由:我们不想其他人依赖这些变量。我们还想在心血来潮时能自由修改其类型或实现。那么,为什么还是有那么多程序员给对象自动添加赋值器和取值器,将私有变量公之于众、如同它们根本就是公共变量一般呢?

1. 数据抽象

在这里插入图片描述
代码清单6-2的漂亮之处在于,你不知道该实现会是在矩形坐标系中还是在极坐标系中。
可能两个都不是!然而,该接口还是明白无误地呈现了一种数据结构。

不过它呈现的还不止是一个数据结构。那些方法固定了一套存取策略。你可以单独读取
某个坐标,但必须通过一次原子操作设定所有坐标。

而代码清单6-1则非常清楚地是在矩形坐标系中实现,并要求我们单个操作那些坐标。这就曝露了实现。实际上,即便变量都是私有,而且我们也通过变量取值器和赋值器使用变
量,其实现仍然曝露了。

隐藏实现并非只是在变量之间放上一个函数层那么简单。隐藏实现关乎抽象!类并不简单地用取值器和赋值器将其变量推向外间,而是曝露抽象接口,以便用户无需了解数据的实
现就能操作数据本体。

我们不愿曝露数据细节,更愿意以抽象形态表述数据。这并不只是用接口和或赋值器、取值器就万事大吉。要以最好的方式呈现某个对象包含的数据,需要做严肃的思考。傻乐着乱加取值器和赋值器,是最坏的选择。

2. 数据、对象的反对称性

对象与数据结构之间的二分原理:

过程式代码(使用数据结构的代码)便于在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值