일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- 448일선
- 1일차
- 112일선
- 언리얼5
- 작계훈련
- 2023 구글 클라우드
- 2023 게이밍 인 구글 클라우드
- URP
- 리팩터링 4장
- GenAI
- 리팩터링
- 이득우의 언리얼 프로그래밍 1
- 주식단테
- 2023 게이밍
- 2023 Gaming
- JavaScript
- 상계9동
- 224일선
- 전주비빔 라이스 버거
- shader
- 리팩터링 3장
- 이득우의 언리얼 프로그래밍1
- 주식
- 스즈메의 문단속
- 공부
- 산토리 하이볼
- unity
- 구글 컨퍼런스
- 언리얼 5
- 스포일러 주의
- Today
- Total
개발 이야기 안하는 개발자
Good Code, Bad Code (6) _ 예측 가능한 코드를 작성하라 본문
열심히 해야하는데...
더 열심히 살아야 하는데....
공부도 하고 게임도 하고 운동도 하고 재태크도 하고 친구도 보고 돈도 벌어야해
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문을 활용하고 정의되지 못한 값들은 예외처리 하는 것이 좋다.
'Book > Good Code, Bad Code' 카테고리의 다른 글
Good Code, Bad Code (5) _ 가독성 높은 코드를 작성하라 (0) | 2025.09.16 |
---|---|
Good Code, Bad Code (4) _ 오류 (0) | 2025.09.14 |
Good Code, Bad Code (3) _ 다른 개발자와 코드 계약 (0) | 2025.09.14 |
Good Code, Bad Code (2) _ 추상화 계층 (0) | 2025.09.04 |
Good Code, Bad Code (1) _ 코드 품질 (0) | 2025.09.02 |