ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 9장 - 코드를 재사용하고 일반화할 수 있도록 하라
    클린 코드(Clean Code)/좋은 코드, 나쁜 코드 요약 2023. 12. 18. 00:01
    728x90

    재사용의 장점

    향후에 재사용이 가능하도록 의도적으로 코드를 작성하고 구조화하는 것이 초기에 노력이 좀 더 필요할 수 있지만 장기적으로 보면 자신과 팀 동료들의 시간과 노력을 절약할 수 있습니다.

     

    불필요한 가정 피하기

    만약 getAllImages() 함수에서 비즈니스 규칙상 이미지가 하나만 있을 것이라고 가정하고 코드 작성자가 하나의 이미지만 찾아 반환한다면 사용하는 쪽에서는 모든 이미지를 가져올 것이라 가정했지만 하나의 이미지만 가져오게 됩니다.

     

    오히려 이름을 getOnlyImageSection으로 주어 가정을 드러내거나 불필요한 가정을 하지 않는것이 좋습니다.

    가정이 필요하다면 이점이 비용보다 큰지 잘 고려해야 합니다.

     

    전역 상태를 주의하기

    static 등의 키워드를 활용하여 공유 상태를 활용하고 싶을 수 있습니다.

     

    예를 들어 장바구니 객체가 존재하고 해당 객체를 1명의 사용자가 사용하는 경우에는 잘 동작할 수 있습니다.

    하지만 여러명의 사용자가 이용하거나, 정책이 바뀌어 1명이 장바구니를 2개 사용해야 한다면 소프트웨어에 문제가 발생합니다.

     

    클래스에 정적 변수가 아닌 인스턴스 변수를 두고, 멤버 함수를 두어 서로 다른 인스턴스끼리는 관여할 수 없도록 만들 수 있습니다.

     

    적절한 기본값 제공하기

    워드프로세서 프로그램을 열 때마다 단어를 입력하기 위해 항상 원하는 글꼴, 텍스트 크기, 텍스트 색, 배경색, 줄 간격 및 높이를 정확하게 선택해야 한다면 매우 불편할 것입니다.

     

    실제 대부분의 워드프로세서는 일련의 적절한 기본값을 제공합니다.

     

    하지만 너무 하위 수준의 코드에서 기본값을 지정하게 된다면 모든 상위 수준의 코드도 동일하게 영향을 받게 됩니다.

    이때 회사마다 기본 글꼴을 전사적으로 지정하고 싶다고 했을 때 하위 수준과 관련된 코드 모두를 수정해야 합니다.

     

    대안으로는 상위 수준의 코드에서 기본값을 세팅하도록 하면 이 문제를 해결할 수 있습니다.

     

    필요 이상으로 매개변수를 받지 말자

    필드가 4개인 DTO A를 만들고 잘 사용하고 있을 때 해당 A 내부에 2개의 필드만 필요한 상황이라면 재사용하고 싶은 욕구를 받을 수 있습니다.

     

    하지만 나머지 2개의 필드는 의미 없는 값으로 세팅되어 호출될 것이며 혼란스러워집니다.

    오히려 새로운 DTO B를 만들어 필요한 것만 매개변수로 받도록 하는 것이 좋습니다.

     

    제네릭 사용을 고려하기

    우리는 소프트웨어를 작성할 때 리스트 클래스를 많이 사용하곤 합니다.

    특히 List<String> 을 많이 사용합니다.

     

    제너릭을 사용하여 코드를 일반화한다면 나중에 어떤 유형을 활용하더라도 해당 코드를 재사용할 수 있게 됩니다.

    댓글

Designed by Tistory.