C配置API

C配置API,第1张

概述在设计用于配置库/实用程序的C API时,我有一个同事,他更喜欢将所有配置参数集中到一个函数调用中.例如: int set_diagnostic_email_config( char *to_address, bool include_timestamp, bool 在设计用于配置库/实用程序的C API时,我有一个同事,他更喜欢将所有配置参数集中到一个函数调用中.例如:
int set_diagnostic_email_config( char *to_address,bool include_timestamp,bool send_for_crashes,bool send_daily_status,bool send_on_event1,bool send_on_event2 )

一个类似的“get”函数存在许多参数..这个方法的主要优点是如果有人添加了一个新选项,例如“bool send_on_event3”,那么因为原型改变了你被迫更新每个地方这个函数调用是使用(假设人们称之为多个地方).

我更喜欢以下内容:

int get_diagnostic_email_config( struct email_config *p_config );int set_diagnostic_email_config( struct email_config *p_config );

您只需根据需要更改结构元素.但是……如果有人更新了email_config“结构,它不会强迫人们更新所有使用它的地方(即使我们经常想……).而且我的同事抱怨说如果有人试图初始化手动“email_config”,然后如果事情后来添加,那么这些新字段将被取消初始化而没有警告.

关于哪种方法首选,是否有任何强烈的共识?或者还有另一种我想念的选择?

解决方法 结构比长列表更好.很长的清单很难维护,因为没有人记得确切的顺序.

您可以创建一个构造函数,使用安全(默认和/或无效)条目填充此结构.始终(可能在访问器功能中)检查无效值将使得在初始化中发现错误变得容易.

您可以在此结构中隐藏幻数.第一个字段是CONfig_MAGIC,它需要等于您定义的常量.您在构造函数中设置此字段,并期望始终设置.这样你就可以避免某人只需要malloc()结构并手动将其初始化.这样的程序员需要了解这个CONfig_MAGIC常量,并且很可能找到并使用正确的构造函数.

总结

以上是内存溢出为你收集整理的C配置API全部内容,希望文章能够帮你解决C配置API所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1234525.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存