[Good Code, Bad Code] 가독성이 높은 코드를 작성하라(마무리) /예측 가능한 코드를 작성하라 -1

2025. 2. 18. 21:30·📚 개발자의 서재/Good Code, Bad Code
해당 포스팅은 톰 롱의 Good Code, Bad Code (P.157~168)를 읽고 정리한 글입니다.

 

프로그래밍 언어의 새로운 기능을 적절히 사용하라

프로그래밍 언어의 새로운 기능은 개발자들이 신중하게 고민한 결과물이므로, 이를 적극 활용하면 코드의 가독성과 견고성을 높일 수 있다. 따라서 새로운 기능이 생겼을 때, 해당 기능을 어떻게 적용할 수 있을지 고민해봐야 한다. 언어가 제공하는 기능을 사용하면 코드가 최적화되어 효율적이고 버그가 없을 가능성이 커지게 된다.

 

그러나 새로운 기능을 맹목적으로 도입하는 것은 바람직하지 않다. 기능의 이점이 명확하더라도, 유지보수 측면에서 팀원들이 이를 충분히 이해하고 있는지 고려해야 한다. 또한, 해당 기능이 문제 해결에 적합한지 신중히 판단해야 한다.

가독성을 높이기 위해 책에서는 다음 9가지를 지킬 것을 강조한다.
1. 서술형 명칭을 사용
2. 주석문을 적절히 사용
3. 코드의 줄 수를 고려해서 작성
4. 일관된 코딩 스타일 준수
5. 깊이 중첩된 코드 지양
6. 함수 호출 시 명확한 매개변수
7. 설명되지 않은 값 지양
8. 익명함수 적절히 사용
9. 언어의 새로운 기능 도입

예측 가능한 코드를 작성하라

개발자는 주어진 문제를 상위 문제에서 하위 문제로 분해하여 추상화 계층을 구성하고 해결한다. 이 과정에서 다른 사람의 코드를 활용해야 할 때가 있으며, 반대로 내 코드가 다른 사람에게 사용될 수도 있다.

 

개발자는 코드 계약, 사전 지식, 적용 가능한 공통 패러다임을 기반으로 코드에 대한 정신 모델을 구축한다. 그러나 코드가 이 정신 모델과 일치하지 않으면, 이해하는 데 불필요한 시간이 소요될 뿐만 아니라 치명적인 버그와 같은 다양한 문제가 발생할 수 있다.

 

매직값을 반환하지 말아야 한다.

매직값을 반환하면 예측 불가능한 위험이 발생할 수 있으므로 사용을 지양해야 한다. 다른 개발자가 이를 인지하지 못하면 암시적 오류 전달이 발생해 매직값을 올바른 값으로 오해할 위험이 있다. 따라서 NULL, Optional, 또는 명시적인 오류 값을 반환하는 것이 바람직하다.

 

코드 계약 관점에서 함수가 매직값을 사용할 경우, 호출하는 측에서 함수 계약의 세부 조항을 이해해야 한다. 따라서 이를 명확한 형태로 변환하는 것이 필요하다.

 

매직값이 우연히 발생할 수 있다.

매직값은 개발자의 의도뿐만 아니라 입력 범위와 영향을 충분히 고려하지 못한 결과로도 발생할 수 있다. 또한, 매직값이 다른 프로그래밍 언어로 작성된 코드로 전달되면 그 의미가 불명확해지고 버그 발생 가능성이 커진다. 따라서 매직값 대신 NULL, Optional을 반환하거나 명시적인 오류 전달 기법을 사용하는 것이 바람직하다.

저작자표시 비영리 변경금지 (새창열림)

'📚 개발자의 서재 > Good Code, Bad Code' 카테고리의 다른 글

[Good Code Bad Code] 예측 가능한 코드를 작성해라-3  (0) 2025.02.20
[Good Code Bad Code] 예측 가능한 코드를 작성해라-2  (0) 2025.02.19
[Good Code Bad Code] 가독성 높은 코드를 작성하라-3  (0) 2025.02.17
가독성 높은 코드를 작성하라-2  (0) 2025.02.16
가독성 높은 코드를 작성하라-1  (0) 2025.02.15
'📚 개발자의 서재/Good Code, Bad Code' 카테고리의 다른 글
  • [Good Code Bad Code] 예측 가능한 코드를 작성해라-3
  • [Good Code Bad Code] 예측 가능한 코드를 작성해라-2
  • [Good Code Bad Code] 가독성 높은 코드를 작성하라-3
  • 가독성 높은 코드를 작성하라-2
l'avenirJun
l'avenirJun
  • l'avenirJun
    오늘도 꾸준히 개발
    l'avenirJun
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 📚 개발자의 서재 N
        • 객체지향의 사실과 오해
        • Good Code, Bad Code
        • 도메인 주도 개발 시작하기 N
      • 🔧 트러블 슈팅
      • Java
      • Spring
      • 운영체제
        • 공룡책 학습
      • 알고리즘
      • GIT
      • 면접 지식
      • Spring 단기심화 2기
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    티스토리챌린지
    애그리거트
    책임-주도 설계
    인터페이스
    타입
    good code bad code
    역할
    표현 영역
    객체지향의 사실과 오해
    리포지터리
    책임
    코드트리
    specification
    캡슐화
    오블완
    객체
    코딩테스트
    코딩트리조별과제
    DIP
    애그리거트 루트
    추상화
    협력
    메시지
    모듈화
    매핑 구현
    유스케이스
    코드 계약
    도메인 모델
    도메인 주도 개발 시작하기
    가독성
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
l'avenirJun
[Good Code, Bad Code] 가독성이 높은 코드를 작성하라(마무리) /예측 가능한 코드를 작성하라 -1
상단으로

티스토리툴바