我有点困惑我读到在C ++中使用getter和setter有一些缺点虽然创建一个只读变量,使变量私有并创建一个getter函数似乎是显而易见的事情。 也许有一个简单的答案,我只是无法看到它,但是什么是一个好的/更好的替代方案,使成员变量只读取没有吸气剂或使用吸气剂功能可接受甚至是这个问题的良好解决方案?
答案 0 :(得分:2)
a)提供getter和setter和/或b)公共数据属性
击败实现最佳耦合和内聚的软件工程目标。
来自维基百科:
在软件工程中,耦合是方式和程度 软件模块之间的相互依赖;衡量有多紧密 连接两个例程或模块;的力量 模块之间的关系。耦合通常与之形成对比 凝聚力。
在计算机编程中,凝聚力指的是程度 模块的元素属于一起。[1]因此,凝聚力衡量 a。内部功能之间的关系强度 给定模块。例如,在高度凝聚的系统中,功能是 密切相关。
在程序编程中,(通常)有8个级别的耦合被排名(最差到最好)。维基文章描述了所有这些内容。您的编码工作应力求最佳耦合(标签为“无”)。
(通常)有7个级别的凝聚力排名(最差到最好)。你应该争取最好的凝聚力(标签'功能')。
考虑耦合的一种方法 - 如果添加setter和getter或使用公共数据属性,为什么还要将这些数据封装到这个类中呢?如果您允许代码的任何部分修改数据属性,那么请考虑当需求更改强制您更改数据属性的名称和/或类型时,可能需要更改多少非类代码。
关于凝聚力的类似想法 - 公共数据属性很容易被不相关的代码(另一个对象或外部函数中的代码)修改,是什么使它们成为你班级的一个“好选择”?也许这些“外部”代码应该是您对象的一部分......是与此对象对系统所做的主要“目标”相关的数据。
答案 1 :(得分:0)
也许您可以使用const引用变量。这是我唯一的使用命名约定的方式,即在只读私有变量前加上“ _”作为前缀。
如果您只阅读参考变量,也可以在整个课堂上使用它。
damagerestorationservice.com