코드 냄새 10 - 너무 많은 인수

개체 또는 함수가 작동하려면 너무 많은 인수가 필요합니다.

요약: 함수에 3개 이상의 인수를 전달하지 마십시오.

문제


  • 낮은 유지 보수성
  • 낮은 재사용률
  • 커플링

  • 솔루션


  • 인수 간의 응집 관계 찾기
  • "컨텍스트"를 만듭니다.
  • Method Object 패턴 사용을 고려하십시오.
  • 문자열, 배열, 정수 등의 "기본"유형을 피하십시오. 개체에 대해 생각하십시오.

  • 예외


  • 응집력 있는 공동 작업자가 필요하지 않은 실제 작업.

  • 샘플 코드



    잘못된




    public class Printer {   
      void print(String documentToPrint, 
             String papersize,
               String orientation, 
               boolean grayscales,
               int pagefrom,
               int pageTo,
               int copies,
               float marginLeft,
               float marginRight,
               float marginTop,
               float marginBotton         
            ){    
        }
    }
    

    오른쪽



    final public class PaperSize {
        //...
    }
    
    final public class Document {
        //...
    }
    
    final public class PrintMargins {
        //...
    }
    
    final public class PrintRange {
        //...
    }
    
    final public class ColorConfiguration {
        //...
    }
    
    final public class PrintOrientation {
        //...
    }
    
    final public class PrintSetup {
        public PrintSetup(PaperSize papersize,
               PrintOrientation orientation, 
               ColorConfiguration color,
               PrintRange range,
               int copiesCount,
               PrintMargins margins
               ){}
    }
    
    final public class Printer {   
      void print(Document documentToPrint, 
             PrintSetup setup        
            ){    
        }
    }
    

    발각



    대부분의 린터는 인수 목록이 너무 클 때 경고합니다.

    태그


  • 프리미티브

  • 결론



    인수를 연관시키고 그룹화하십시오.
    항상 실제 세계 매핑을 선호합니다. 응집력 있는 개체에서 인수를 그룹화하는 방법을 실생활에서 찾으십시오.

    함수가 너무 많은 인수를 가져오는 경우 일부는 클래스 구성과 관련이 있을 수 있습니다. 이것도 디자인 냄새입니다.

    처지











    학점



    사진 제공: Tobias Tullius on Unsplash


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




    마지막 업데이트: 2021/06/13

    좋은 웹페이지 즐겨찾기