将常用表达式提取到变量中
Extracting common expressions into variables
假设我有一个指向类对象JoeBloggs
的指针,这样做更好吗
int value = Factorize( (JoeBloggs->GetNumber()*CalculateHeight(57,88)) )*JoeBloggs->GetSpeed();
或
int currentSpeed = JoeBloggs->GetSpeed();
int currentNumber = JoeBloggs->GetNumber();
int value = Factorise( (currentNumber*CalculateHeight(57,88)) )*currentSpeed;
我一直在用最上面的,因为它短得多,但有很多有几次,当我认为第二个会产生更整洁的代码时。我正在努力坚持一种一致的编码风格。
我建议您将指针传递给计算结果的函数"Factorise">
换句话说:封装。
您不必保持一致。
坚持第二条规则当然不是一个好主意,因为它会使代码变得非常冗长。
但你也不能强制执行第一条规则,因为表达式有时会变得足够复杂,所以你必须打破它们。如果你访问了一个用成员函数等检索到的对象的成员,这一点尤其正确。但话说回来,这可能是一个好迹象,表明你在错误的地方做了工作。
顺便说一句,还有其他规则可以通过命名将代码分解为多个部分。如果你给你表达的第一部分起个名字,那么读者就会明白你到底在做什么——因为这个规则,你的例子是完美的,因为我不知道你在做什么。。。
int calculatedheight = Factorize( (JoeBloggs->GetNumber()*CalculateHeight(57,88));
int value = calculatedheight*JoeBloggs->GetSpeed();
对于CCD_ 2也是如此。。那是什么?这是一个完全没有意义的变量名。
我强烈推荐Martin Fowler关于重构的文章和书,其中有大量的例子向您展示了如何以正确的方式进行重构。我提到的规则叫做引入解释变量。
好的代码不是短代码。好的代码就是可读的代码。代码被读取的频率大约是写入的10倍。如果它是一个现实生活中的商业应用程序,那么您将在未来多次阅读此代码,并且必须再次完全理解该代码的作用。从这个角度来看,您和您的团队更容易理解哪个版本?
相关文章:
- 遍历对象向量,并找到与从文本文件中提取的对象匹配的变量
- 如何从字符数组C++中提取2个整数并将它们存储在2个变量中(初学者)
- 如何使用boost :: program_options提取环境变量
- C 正则是从脚本文件中提取变量
- 每"x"秒从C++程序中提取变量的值
- CUDD:提取变量排序
- 从输入文件 c++ 中提取和设置变量
- C :提取分析数学表达式的符号/变量
- 如何从方程式提取变量
- 从变量中提取八位字节int64_t
- 提取运算符 (>>) 可以覆盖变量吗?
- 将常用表达式提取到变量中
- 从字符串中提取不同的数据类型变量
- 从结构或类中提取成员变量
- 将 Lua 中的变量提取到C++中
- 如何正确从uint16_t变量中提取一个特定位
- 带有变量参数的提取函数
- 提取字符串的一部分并将部分放入字符数组和另一个字符串变量C++
- 如何判断对变量的流提取是否失败
- 从文本文件中提取特定值(char & int)并插入到多个变量中C++