我正在阅读Code Complete 2,第 7.1 章,我不明白下面作者所说的观点。
7.1 创建例程的正当理由
隐藏指针操作
指针操作往往难以阅读并且容易出错。通过将它们隔离在例程(或类,如果合适)中,您可以专注于操作的意图,而不是指针操作的机制。此外,如果操作只在一个地方完成,您可以更加确定代码是正确的。如果您发现比指针更好的数据类型,您可以更改程序,而不会破坏将使用指针的例程。
请解释或举例说明此目的。
我正在阅读Code Complete 2,第 7.1 章,我不明白下面作者所说的观点。
7.1 创建例程的正当理由
隐藏指针操作
指针操作往往难以阅读并且容易出错。通过将它们隔离在例程(或类,如果合适)中,您可以专注于操作的意图,而不是指针操作的机制。此外,如果操作只在一个地方完成,您可以更加确定代码是正确的。如果您发现比指针更好的数据类型,您可以更改程序,而不会破坏将使用指针的例程。
请解释或举例说明此目的。
本质上,建议是数据隐藏的一个具体示例。归结为——
坚持面向对象的设计并将数据隐藏在对象中。
在指针的情况下,规范是永远不要将“内部”数据结构的指针公开为公共成员。而是将它们设为私有并仅公开某些允许在指针上作为公共成员函数执行的有意义的操作。
便携/易于维护
额外的优点(如引用部分所述)是内部数据结构的任何更改都不会强制更改外部 API。只需要修改公开的成员函数的内部实现来处理任何更改。
代码重用/易于调试
此外,指针操作现在不会复制/粘贴并在代码周围乱扔垃圾,不知道它们到底做了什么。它们现在仅限于编写的成员函数,牢记内部数据结构的操作方式。
例如,如果我们有一个允许用户添加行的数据表,
table
公开函数的对象addNewRowTop(newData)
addNewRowBottom(newData)
addNewRow(position, newData)
为了更进一步,我们通过简单地调用对象的另一个内部变量来实现并简单地addNewRowTop()
调用。addNewRowBottom()
addNewRow()
position
table