ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 리팩터링 2판 - 3. 코드에서 나는 악취
    Books/리팩터링 2판 2022. 6. 15. 13:55

    3-1. 코드의 나쁜 냄새란?

    3-2. 나쁜 냄새 ( 기본적인 악취 )

    코드에서 나는 악취들 종류

    - 기이한 이름 ( Mysterious Name )

        ㆍ코드 이해력, 가독성 X

    - 중복 코드 ( Duplicated Code )

        ㆍ실수와 에러  발생할 확률 ↑

    - 긴 함수 ( Long Function )

        ㆍ이해하기 어려움, 재사용성 ↓

    - 긴 매개변수 목록 ( Long Parameter List )

        ㆍ사용하기 어려움, 잦은 실수

    - 전역 데이터 ( Global Data )

        ㆍ최악, 유령같은 버그 출몰

    - 가변 데이터 ( Mutable Data )

        ㆍ예상하지 못한 곳에서 데이터를 변경

     

    3-3. 나쁜 냄새2 ( 고급레벨 )

    - 뒤엉킨 변경 ( Divergent Change )

        ㆍ다양한 이유로 수정을 해야함

        ㆍSRP 원칙 준수 X

    - 산탄총 수술 ( Shotgun Surgery )

        ㆍ한 개를 수정하면 여러 곳에서 수정해야 함

    - 기능 편애 ( Feature Envy )

        ㆍ다른 모듈과 더 밀접하게 상호작용

        ㆍ모듈 수정시 산탄총 수술...

    - 데이터 뭉치 ( Data Clumps )

        ㆍ여러 곳에서 항상 함께 쓰임

        ㆍ데이터와 데이터처리로직이 뭉쳐다님

    - 기본형 집착 ( Primitive Obsession )

        ㆍ관련된 코드가 여기저기

    - 반복되는 switch문 ( Repeated Switches )

        ㆍ새로운 타입이 추가되면 여기저기 업데이트

     

    3-4. 나쁜 냄새3 ( 기타 냄새들 )

    - 반복문 ( Loops )

        ㆍ절차형의 코드 → 사이드 이펙

    - 성의 없는 요소 ( Lazy Element )

        ㆍ불필요한 함수, 클래스, 인터페이스

    - 추측성 일반화 ( Speculative Generality )

        ㆍ혹시 모르니, 미래를 위해서 

    - 임시 필드 ( Temporary Field )

        ㆍ특정한 상황에서만 사용됨, 이해도 

    - 메세지 체인 ( Message Chains )

        ㆍ내부 로직이 노출됨

    - 중개자 ( Middle Man )

        ㆍ단순 전달만 하는 불필요한 코드

    - 내부자 거래 ( Insider Trading )

        ㆍ모듈 사이 데이터 거래 → 결합도 

    - 거대한 클래스 ( Large Class )

        ㆍ중복 코드 ↑, 뒤엉킨 변경 ↑

    - 서로다른 인터페이스의 대안 클래스들 ( Alternative Classes with Different Interfaces )

        ㆍ서로 대체성 ↓, 재사용성 ↓

        ㆍ비슷한 일을 하지만 다른 인터페이스를 가질 경우

    - 데이터 클래스 ( Data Class )

        ㆍ필요한 로직이 여기저기

    - 상속 포기 ( Refused Bequest )

        ㆍ상속의 오용, 남용은 위험

    - 주석 ( Comments ) 

        ㆍ필요없는 주석은 악!

    댓글

Designed by Tistory.