카테고리 없음

읽기 좋은 코드 작성법

가든_ 2024. 7. 14. 21:18

기본 원칙

  • 순환 복잡도는 7을 넘지 않도록 한다
    • foreach, while, do, switch 블록의 case마다 복잡도를 1씩 증가시킴
  • 함수는 24줄 이하로 작성한다
    • 가로 80자, 세로 24줄 (80/24 법칙)
  • 코드 조각 하나에서 7가지 이상의 작업이 일어나지 않도록 한다
    • 순환 복잡도를 사용하여 관리

리팩토링

클래스 필드를 사용하지 않는 메서드 ?

클래스 필드를 사용하지 않는 코드는 의심스러움. 이런 코드는 클래스의 인스턴스 상태와 관련된 작업을 수행하지 않기 때문에, 해당 블럭이 클래스의 메서드로 존재할 필요가 없음

문제점

  1. 클래스 설계의 부적절함
    • 클래스는 상태와 행위를 캡슐화하는 것이 목적. 메서드가 클래스 필드를 전혀 사용하지 않는다면, 그 메서드는 클래스의 인스턴스 상태와 무관하게 작동할 가능성이 높음
    • 이 메서드는 클래스의 인스턴스 메서드보다 정적 메서드로 변경하는 것이 더 적절할 수 있음
  2. 코드의 응집도 저하
    • 클래스 내부의 메서드들은 서로 관련된 상태와 행위를 캡슐화해서 높은 응집도를 유지해야 함
    • 클래스 필드를 사용하지 않는 메서드는 응집도를 저하시켜 객체 지향 설계 원칙을 위반함 (코드의 가독성과 유지보수성 저하)
  3. 잘못된 코드 위치
    • 필드를 사용하지 않는 메서드는 해당 클래스가 아니라 다른 곳에 위치하는 것이 더 자연스러울 수 있음
    • 예를 들어, 유틸리티 함수처럼 독립적인 동작을 하는 메서드는 별도의 유틸리티 클래스로 분리하는 것이 적합함
기능 편애

객체 지향 프로그래밍에서 나타나는 code smell 중 하나.특정 클래스의 메서드가 다른 클래스의 데이터를 과도하게 조작하거나 접근하는 것을 의미.
문제점: 캡슐화 위반, 응집도 저하, 유지보수 어려움.
해결 방법: 데이터 조작과 관련된 로직은 해당 데이터가 속한 클래스 내부로 옮기는 것이 좋음

Null Reference Type

함수의 리턴형 뒤에 ?를 붙이면 해당 함수에서 null을 리턴할 수 있음을 명시적으로 나타낼 수 있다.

  • 코드의 명확성과, 컴파일러가 null 관련 문제를 더 잘 검사하도록 하여 코드의 안정성과 유지 보수성을 향상시킬 수 있음.