코드 냄새 143 - 데이터 덩어리

일부 개체는 항상 함께 있습니다. 왜 우리는 그들을 분할하지 않습니다?

TL;DR: Make cohesive primitive objects travel together



문제


  • 나쁜 응집력
  • 중복 코드
  • 검증 복잡성
  • 가독성
  • 유지보수성

  • 솔루션


  • 추출 클래스
  • 작은 물체 찾기

  • 문맥



    이 냄새는 원시적인 집착을 가진 친구입니다.

    비즈니스 로직이 반복되고 그들 사이에 규칙이 있는 두 개 이상의 기본 개체가 함께 붙어 있는 경우 .

    샘플 코드



    잘못된




    public class DinnerTable
    {
        public DinnerTable(Person guest, DateTime from, DateTime to)
        {
            Guest = guest; 
            From = from;
            To = to;
        }
        private Person Guest;
        private DateTime From; 
        private DateTime To;
    }
    

    오른쪽



    public class TimeInterval
    {
        public TimeInterval(DateTime from, DateTime tol)
        {
            // We shoud validate From < To
            From = from;
            To = to;
        }
    }
    
    public DinnerTable(Person guest, DateTime from, DateTime to)
    {    
        Guest = guest;
        Interval = new TimeInterval(from, to);
    }
    

    발각



    [X] 반자동

    응집 패턴에 기반한 탐지는 몇 가지 린터에서 가능합니다.

    태그


  • 응집력

  • 결론



    행동을 올바른 위치에 그룹화하고 기본 데이터를 숨겼습니다.

    처지
















    더 많은 정보


  • Refactoring Guru
  • Wikipedia

  • 학점



    Unsplash의 Dynamic Wang 사진


    The heart of the software is its ability to solve domain-related problems for its user. All other features, vital though they may be, support this basic purpose.



    에릭 에반스






    이 기사는 CodeSmell 시리즈의 일부입니다.


    좋은 웹페이지 즐겨찾기