저는 오래된 c를 C++로 천천히 업데이트하는 환경에서 작업합니다. 평등 진술에서 종종 비 클래스 enum이 사용됩니다.비 클래스 enums (왼쪽의 rvalues)에 대한 동등성이있는 우수 사례
이제 프로그래밍 실습을 받거나 우수 사례를 다루는 책을 읽은 사람이라면 lvalues와 rvalues 사이의 동등성은 왼쪽의 rvalue로 구조화되어 '== '은'= '로 대체됩니다. 나는 열거로이 일을 한 번도 본 적이 없다. 쉬운 대답은 enum 클래스를 사용하는 것이지만 오래된 코드의 큰 시체로 항상 즉시 수행 될 수는 없습니다. 열거 형은 기본적으로 정수형이므로 왼쪽 열에도 열거 형을 유지하는 것이 좋습니다.
나는 그것이 좋은 연습 간주 될뿐만 아니라 열거의 왼쪽에 우변을 유지하려면 더 나은#include <iostream>
using namespace std;
int number;
enum Color { RED, GREEN, BLUE };
int main() {
number = 1234;
Color color = BLUE;
// This is done
if (555 == number) { /*...*/ }
// So that this never accidently happens
if (number = 555) { /*...*/ }
// Resulting in this (number changed to 555)
cout << number <<endl;
// I have never seen this done
if (RED == color ) { /*...*/ }
// should it be to, prevent this
if (color = RED) { /*...*/ }
//Resulting in this (color changed to 0 or RED)
cout << color <<endl;
return 0;
}
"요다 스타일"비교에 대해 이야기하고 있습니다. 현대의 컴파일러가 의심스러운 과제에 대한 경고를하기 때문에 요즘은 더 이상 사용되지 않는 것으로 간주됩니다. 일부는 동의하지 않습니다. –
* 프로그래밍 과정을 밟거나 우수 사례를 다루는 책을 읽은 사람이라면 우연한 '='을 방지하기 위해 평등을 왼쪽에있는 값으로 구성해야한다는 것을 알고있을 것입니다. * 사실이 아닙니다. 그리고 괜찮은 컴파일러는 어쨌든 이러한 경우에 대한 경고를 트리거합니다. – sidyll
^* Quod Erat Demonstrandum * :) –