C核心指南I24避免相邻参数类

理由:

两个相邻参数,如果类型相同,很容易顺序颠倒。比如

voidcopy_n(T*p,T*q,intn);//copyfrom[p:p+n)to[q:q+n)

这是KRC风格接口的一个讨厌的变体,目标和源头参数很容易颠倒。

把源头参数声明成const就比较容易识别他们的关系了。因为,我们复制的时候,一般不会去改变数据源。

voidcopy_n(constT*p,T*q,intn);//copyfrom[p:p+n)to[q:q+n)

例外:

如果不关心参数顺序,那就不存在这个问题,就不需要const修饰了:

intmax(inta,intb);

替代方案:

不要用指针传递数组。可以通过span表示一个序列对象:

voidcopy_n(spanconstTp,spanTq);//copyfromptoq

替代方案:

定义结构体,用结构体的成员名表示相应的参数:

structSystemParams{stringconfig_file;stringoutput_path;secondstimeout;};voidinitialize(SystemParamsp);

因为调用的时候,要把参数填到带名字的成员变量中,这样可以明确参数的意义。

强化策略:

(简单)如果出现连续两个相同类型的参数,警告。

C++核心指南是由C++创始人BjarneStroustrup和ISO/ANSIC++标准委员会秘书HerbSutter领导开发的关于如何正确高效使用C++的在线文档。就像C++语言本身一样,这些指南是许多组织中许多人多年讨论和设计的结果。

kimim


转载请注明:http://www.aierlanlan.com/rzfs/585.html

  • 上一篇文章:
  •   
  • 下一篇文章: