코드 냄새 136 - 하위 클래스가 하나뿐인 클래스

8717 단어
일반적이고 미래를 예견하는 것은 좋습니다.

TL;DR: Don't over-generalize



문제


  • 투기적 디자인
  • 복잡성
  • 오버엔지니어링

  • 솔루션


  • 더 많은 예제를 얻을 때까지 추상 클래스를 제거하십시오
  • .

    문맥



    과거에 프로그래머들은 우리에게 변화를 위한 설계를 하라고 말했습니다.

    요즘 우리는 과학적인 방법을 계속 따르고 있습니다.

    중복을 발견할 때마다 제거합니다.

    전에는 아닙니다.

    인터페이스가 아니라 클래스가 아닙니다.

    샘플 코드



    잘못된




    class Boss(object):
        def __init__(self, name):
            self.name = name 
    
    class GoodBoss(Boss):
        def __init__(self, name):
            super().__init__(name)
    
    # This is actually a very classification example
    # Bosses should be immutable but can change their mood
    # with constructive feedback
    

    오른쪽



    class Boss(object):
        def __init__(self, name):
            self.name = name  
    
    # Bosses are concrete and can change mood
    

    발각



    [X] 자동

    컴파일 시간에 이 오류를 추적할 수 있기 때문에 린터에서는 매우 쉽습니다.

    예외



    일부 프레임워크는 추상 클래스를 자리 표시자로 만들어 모델을 구축합니다.

    하위 분류는 우리의 첫 번째 옵션이 되어서는 안 됩니다.

    더 우아한 해결책은 덜 결합되어 있기 때문에 선언하는 것입니다.

    태그


  • 오버디자인

  • 처지


























    결론



    우리는 추상화를 기다려야 하며 창의적이거나 사변적이지 않아야 합니다.

    학점



    Unsplash의 Benjamin Davies 님의 사진


    Writing a class without its contract would be similar to producing an engineering component (electrical circuit, VLSI (Very Large Scale Integration) chip, bridge, engine...) without a spec. No professional engineer would even consider the idea.



    버트런드 메이어






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


    좋은 웹페이지 즐겨찾기