{

왜냐하면, 헷갈리기 때문이다. 그것도 매우 헷갈리기 때문이다. 지금까지의 짧은 코딩 경력으로도 헷갈리는 코드는 좋지 못한 코드라는 것을 알 수 있었다. 연산자의 경우 "기호" 적인 부분을 재정의 하는 것이기 때문에, "기호"만으로 그 함수를 파악해야만 한다.

그런데 그 "기호"처럼 행동하지 않는다면, 어떻게 되겠는가? 다시 다 뜯어 봐야 할 것이다. 이것은 시간 낭비이다. 자신만 볼 코드이기 때문에 상관없다고 하자. 정말 자기 자신은 그 코드를 보고도 헷갈리지 않을 자신이 있을까? 자신이 만큼 코드라도 일주일간만 안보면, 새롭게 느껴지는게 이 쪽 세계인데, 정말 그럴지 의구심이 든다.

"-" 연산자가 "-"의 의미를 지니지 않고, "+" 의 의미를 지닌다고 생각해 보면 쉽게 이해가 간다.

어쩔 수 없이 연산자를 재정의 한다면, 본래의 의미를 유지하게 하고, 본래의 의미를 유지 할 수 없다면, "나 지금 설계를 잘못 한거지?" 라는 생각을 해야 할 것이다.

}

'책 정리 > C++ Coding Standards : C++ 코딩의 정석' 카테고리의 다른 글

항목 31 : 함수의 인자의 처리 순서에 좌우되는 코드는 좋지 않다. ( Don’t write code that depends on the order of evaluation of function arguments. )  (0) 2009.02.26
항목 30 : &&, || 그리고 콤마의 오버로딩은 피하라. ( Avoid overloading &&, ||, or , (comma) )  (0) 2009.02.26
항목 29 : 간접적인 타입 변환을 피하기 위해 오버로딩을 활용하라. ( Consider overloading to avoid implicit type conversions. )  (0) 2009.02.25
항목 28 : ++와 --의 표준적인 형식과 접두 형식을 사용하라. ( Prefer the canonical form of ++ and --. Prefer calling the prefix forms. )  (0) 2009.02.25
항목 27 : 표준적인 형식의 산술 및 할당 연산자를 사용하라. ( Prefer the canonical forms of arithmetic and assignment operators. )  (0) 2009.02.25
항목 26 : 오버로딩된 연산자의 본래 의미를 유지하라. ( Preserve natural semantics for overloaded operators. )  (0) 2009.02.24
항목 25 : 값, (스마트) 포인터, 참조 중 적절한 방식으로 인자를 얻어라.(Take parameters appropriately by value, (smart) pointer, or reference. )  (0) 2009.02.24
항목 24 : 내부 #include 가드를 사용하라. 외부 #include 가드를 써서는 안 된다. ( Always write internal #include guards. Never write external #include guards. )  (0) 2009.02.24
항목 23 : 헤더 파일은 충분히 완성된 형태로 만들어라. ( Make header files self-sufficient. )  (0) 2009.02.24
항목 22 : 정의의 의존성과 순환 의존성을 최소화 하라. ( Minimize definitional dependencies. Avoid cyclic dependencies. )  (0) 2009.02.24
항목 21 : 컴파일 단위 사이의 초기화 의존성을 없애라. ( Avoid initialization dependencies across compilation units. )  (0) 2009.02.23
posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요