微不足道的问题,但对我来说很多,我也想象其他人。有没有人有一个非常好的,非常聪明的解决方案?
void some_function (obj &A, obj &B)
{
// do stuff with A...
//e.g.
double number_A = (value - A.member_func() ) * A.other_func();
// do stuff with B. similar BUT NOT EXACTLY like A...
//e.g.
double number_B = (value + B.member_func() ) * A.other_func();
// !!!!
// Big time TYPO - should say "B.other_func()", not "A.other_func()" !!!!
// !!!!
}
对这些类型的错误有什么好的防范措施吗?
我经常需要处理两个类似的变量,比如说一个名为“A”的版本,另一个是“B”。
因为每个代码都相似,所以我经常使用在“A”上工作的代码作为“模板”(即复制和粘贴)用于在“B”上工作的代码 - 进行小的调整,使代码变成适合 B。
因为我是人类,所以有时在复制代码时会忘记在某些位置将“A”更改为“B”。如果我很幸运,这将导致程序崩溃。无论哪种方式,这都是灾难性的。
有谁知道防止这种错别字的聪明技巧?
我想过...
- 括起来的括号
{ }
试图限制变量的范围 - 但如果对象 A 和 B 在函数参数中,那么这并不能解决它。 - 将每个函数分成子函数——一个用于 A,一个用于 B。从开发人员的角度来看,这有点麻烦(传递/返回许多变量)。
- 仅使用指向对象本身的指针 - 而不是实际对象。这样我们就可以
{ scope-control }
指针了。也很麻烦,(并且定义指针的开销可以忽略不计,即使我非常非常频繁地调用该函数,对吗?)