우리는 멤버 함수에 대한 호출이 상태를 변경할 수 있고 때로는 기본값이있는 부울에 의존하지 않는 여러 클래스가 있습니다.성능 손실없이 코드 가독성 향상
A a;
a.set("foobar");
assert(a.changed() == true);
A a;
a.set("foobar", false);
assert(a.changed() == false);
대 그 멤버 함수는 가상 유의하시기 바랍니다. 나는 대중에게 단지 래퍼를 더 읽기 코드에 별칭을 사용하고 여전히 이전 방법을 허용하는 개인 멤버 함수를 만들어주고 호의 것 :
a.silentlySet("foobar") {
a.set("foobar", false);
}
어쨌든 다음 인라인 될이 것 같아요. 나는 가독성을 향상시킬 enum과 상수를 쓸 수 있다는 것을 알고있다 : a.set("foobar", SILENTLY);
하지만 문제는 불리언 특성 (do 또는 not)으로 문제가되지 않는다. 다른쪽에. 그러나 나는 그런 상황을 어떻게 다루는 지 듣고 싶다. (필자가 확실하게 몇 가지 중요한 세부 사항을 놓친 것처럼 "의존적 인"대답을 얻을 것이라고 가정 함) 그것과 함께 살고 있습니까?
이러한 멤버 함수는 자주 호출되거나 사용되는 것이 아니라 드물지도 않습니다. 내가 두려워하는 점은 다른 의미가있을 때 때때로 부울을 silent/not_silent-flag로 오해 할 수도 있다는 것입니다.
이 또한 오해의 소지가 될 수있는 예 :
if(b->getData(false) && something_other)
이 b->getData() == false
열거 형은 부울보다 좋습니다. * 조용히 말하면 * "조용히"말하면 "거짓"이라고 말하지 마십시오. 실제로는 두 개의 값이있는 열거 형을 올바르게 인식하기 위해 단지'foo (true, false, true, true)'호출과 버그가 필요합니다. – molbdnilo
그리고 enums는 새로운 유형을 선언합니다. 귀하의 이익을 위해 타입 시스템을 사용하십시오. –