gpt4 book ai didi

c - 用于检查属性值的适当 C API

转载 作者:太空宇宙 更新时间:2023-11-04 04:58:01 25 4
gpt4 key购买 nike

在 C 中有两种明显的方法来提供对内部属性值的外部访问(A)提供一个通用接口(interface)来接受随时间变化的属性列表(一些添加/一些死亡)或(B)一个特定的接口(interface)每一个属性。

示例 A:

int x_get_attribute_value(ATT att)
{
if (a) return a_val;
if (b) return b_val;
}

示例 B:

A_Enum x_get_a_type_attribute() {}
B_Enum x_get_b_type_attribute() {}

我记得 Eclipse 的 API 非常像 A(我可能错了)。我不能做的是提出一个令人信服的论据来反对其中任何一个。

A 是干净的 - 任何用户都无处可去查找属性值。它可以干净利落地发展,而不会留下死接口(interface)。​​

B 在一定程度上进行了类型检查——这是 C 的枚举!

是否有一个大的击球手争论将天平从意见中推开?

最佳答案

B 引入新属性的开销要大得多。将新属性引入稳定的软件分支将承担许多风险,因为必须从根本上改变界面。

根据我的个人经验,一般来说,我会保证 A。

很大程度上还取决于软件集成的紧密程度。借用 Booch 的术语,选项 A 促进弱耦合,而 B 促进软件组件之间的强耦合

如果您希望能够卡住界面,使其在很长一段时间内保持稳定,禁止任何更改,那么 B 将允许您这样做:添加新属性是高度可见的。如果您希望能够随时添加新属性,当您期望拥有大量新属性时,选项 A 显然是您最喜欢的。

您也可以考虑两者的健康组合。对于重要的属性具有专用的获取/设置功能。对于其他不太重要的选项,请使用通用的 get/set 函数。如果某个属性变得重要,则可以为其引入专用的 get/set。

注意显然,不应忘记性能:选项 B 在任何微基准测试中都会胜过 A。

关于c - 用于检查属性值的适当 C API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3018767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com