在设计用于配置库/实用程序的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”,然后如果事情后来添加,那么这些新字段将被取消初始化而没有警告.
关于哪种方法首选,是否有任何强烈的共识?或者还有另一种我想念的选择?