개발 이야기 안하는 개발자

Good Code, Bad Code (6) _ 예측 가능한 코드를 작성하라 본문

Book/Good Code, Bad Code

Good Code, Bad Code (6) _ 예측 가능한 코드를 작성하라

07e 2025. 9. 24. 00:32
반응형

열심히 해야하는데...

더 열심히 살아야 하는데....

 

공부도 하고 게임도 하고 운동도 하고 재태크도 하고 친구도 보고 돈도 벌어야해

24시간이 부족하단 말이지...

...이놈의 쇼츠만 없었어도... 다 했을탠데 ㅎ

 

 

매직값을 반환하지 말라 (-1 같이 잘못된 값을 받은 경우)

- 대신, 널이나 오류를 반환하는게 좋다

- 배열같은 컨테이너 형식은 널 대신 비어있는 값을 반환해라

- 문자열은 비어있는 상태에서 문제가 될 수 있으니, 널로 반환해라 

 

 

예상치 못한 부수효과는 피해라

- 부수 효과 : 어떤 함수의 호출이 함수 외부에 초래한 상태 변화를 뜻한다.

- 예) 값을 변경하는 함수 내부에 과거 값을 기록 한다( 과거 값을 기록하는게 부수효과 )

class UserDisplay
{
	void getPixel(int x, int y)
    {
    	...
        canvas.redraw(); //픽셀을 가져오면서 다시 그리도록 이벤트 호출 (부수효과)
        ...
    }
}

 

redraw () 는 비용이 비싸서 디스플레이가 깜빡거리는 식의 문제가 생길수도 있다.

위 코드처럼 getPixel 을 호출하는 사람은 redraw를 인식하지 못하고 getPixel을 호출할 수 있기 때문에 예측할 수 없는 부수 효과는 하지 않는 것이 좋다.

 

또는, 메소드의 명명을 정확하게 해서 사용하는 사람이 정확하게 인지할 수 있도록 하는 것도 방법이다.

- getPixel -> redrawAndGetPixel

 

입력 매개변수가 수정되는 것을 주의하라.

void calculateSum(int a, int b, int& result) {
    a = a + 10; // 실수로 입력 매개변수 a를 수정
    result = a + b; // 의도치 않은 결과
}

이때 C++에서 &로 나오는 것을 출력 매개변수라 한다.

입력 매개변수의 값이 수정되는 것을 막기 위해서 const 를 붙여서 수정되지 않도록 막는 것이 좋다.

 

미래에 추가될 열거값을 암묵적으로 처리하는건 문제가 될 수 있다.

- 특정 enum의 값을 if 문을 통해 분기처리를 하고, 나머지는 처리하지 않게 될 경우, 나중에 추가되는 enum값에 대해서 반응하기 어렵다.

- 따라서, 특정 값을 분기처리 했다는 것을 잘 보여주는 Switch문을 활용하고 정의되지 못한 값들은 예외처리 하는 것이 좋다. 

반응형