C++ 如何调用这种编写代码的方式?
我正在回顾一个非常老的项目,并且已经第二次看到类似这样的代码(类似C++的伪代码): 在此代码中,C++ 如何调用这种编写代码的方式?,c++,language-agnostic,C++,Language Agnostic,我正在回顾一个非常老的项目,并且已经第二次看到类似这样的代码(类似C++的伪代码): 在此代码中,conditionA在两次计算中的计算结果相同,conditionB的计算结果相同。因此,代码相当于: if( conditionA ) { actionA(); } if( conditionB ) { actionB(); } 因此,前一个变体只是相同效果代码的两倍。这种编写代码的方式(我指的是前一种变体)怎么能被称为呢?我称之为糟糕的代码。尽管我倾向于在项目中找到类似的结构,这些
conditionA
在两次计算中的计算结果相同,conditionB
的计算结果相同。因此,代码相当于:
if( conditionA ) {
actionA();
}
if( conditionB ) {
actionB();
}
因此,前一个变体只是相同效果代码的两倍。这种编写代码的方式(我指的是前一种变体)怎么能被称为呢?我称之为糟糕的代码。尽管我倾向于在项目中找到类似的结构,这些结构在没有进行任何代码审查的情况下不断增长。(或其他松散的开发实践)。我称之为糟糕的代码。尽管我倾向于在项目中找到类似的结构,这些结构在没有进行任何代码审查的情况下不断增长。(或其他松散的开发实践)。我也会称之为糟糕的代码
缩进没有最好的方法,但有一条黄金法则:选择一条并坚持下去。我也会称之为坏代码
缩进没有最好的方法,但有一条金科玉律:选择一个并坚持下去。这是一个不知道如何使用缩进的人编写的代码。这是一个不知道如何使用缩进的人编写的代码。这是“冗余”代码,是的,这是不好的。如果必须在对actionA的调用中添加某个前提条件(假设前提条件本身不能放入actionA),那么我们现在必须在两个地方修改代码,因此可能会忽略其中一个 在这种情况下,删除某些代码行会比编写新代码感觉更好。这是“冗余”代码,是的,这是不好的。如果必须在对actionA的调用中添加某个前提条件(假设前提条件本身不能放入actionA),那么我们现在必须在两个地方修改代码,因此可能会忽略其中一个
在这种情况下,删除某些代码行比编写新的代码行感觉更好。这确实是一种糟糕的编码实践,但请注意,如果条件A和B评估有任何副作用(var增量等),则这两个片段并不相等。这确实是一种糟糕的编码实践,但请注意,如果条件A和条件B评估有任何副作用(var增量等),则这两个片段并不相等。无效代码?
此外,可以称为“按行付费”低效代码?
另外,可以称为“按行付费”我会称之为“两次更好”。这样做是为了确保运行时真正理解问题;)
(尽管在多线程、不安全的环境中,两种变体的结果可能不同。)我称之为“两次更好”。这样做是为了确保运行时真正理解问题;)
(虽然在多线程、不安全的环境中,两种变体的结果可能不同。)我可以称之为“我上个月在匆忙/不专注/疲劳时编写的代码”。我们都犯过或已经犯过这样的错误。只要改变它。如果你想,你可以试着找出是谁干的,希望不是你,然后给他/她的反馈。我可以称之为“我上个月写的代码,当时我很匆忙/没有集中精力/很累”。我们都犯过或已经犯过这样的错误。只要改变它。如果你想,你可以试着找出是谁干的,希望不是你,然后给他/她的反馈。既然你说你已经不止一次看到过这件事,那么这似乎不仅仅是因为疲劳而导致的一次性错误。我认为有人反复提出这样的代码有几个原因:
(还有一种可能性是,这可能比你的简化剪报节目要复杂得多。)既然你说你不止一次看到过这一点,那么这似乎不仅仅是由于疲劳造成的一次性错误。我认为有人反复提出这样的代码有几个原因:
if( conditionA ) {
actionA();
}
if( conditionB ) {
actionB();
}
if (A&&B){
action1;
} elseif(A){
action2;
} elseif(B){
action3;
} else{action4}
if( fizz && buzz ) {
printFizz();
printBuzz();
} else {
if( fizz ) {
printFizz();
}
else if( buzz ) {
printBuzz();
}
else {
printValue();
}
}