Code Smell 135 - 단 한 번의 구현으로 인터페이스

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

TL;DR: Don't over-generalize



문제


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

  • 솔루션


  • 더 많은 예제를 얻을 때까지 인터페이스를 제거하십시오
  • .

    문맥



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

    요즘 우리는 과학적인 방법을 따릅니다.

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

    전에는 아닙니다.

    샘플 코드



    잘못된




    public interface Vehicle {
        public void start();
        public void stop();
    }
    
    public class Car implements Vehicle {
        public void start() {
            System.out.println("Running...");
        }
        public void stop() {
            System.out.println("Stopping...");
        }
    }
    
    // No more vehicles??
    

    오른쪽



    public class Car {
        public void start() {
            System.out.println("Running...");
        }
        public void stop() {
            System.out.println("Stopping...");
        }
    }
    
    // Wait until more vehicles are discovered
    

    발각



    [X] 자동

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

    예외



    이 규칙은 시스템 간 정의 및 비즈니스 로직에 적용됩니다.

    일부 프레임워크는 이행할 프로토콜로 인터페이스를 정의합니다.

    우리는 기존의 실제 프로토콜을 모델링해야 합니다.

    인터페이스는 프로토콜에 대한 대응입니다.

    종속성 주입 프로토콜은 구현으로 충족되는 인터페이스를 선언합니다. 그때까지는 비어 있을 수 있습니다.

    귀하의 언어가 모의 테스트를 위한 인터페이스를 정의하는 경우 다른 것입니다code smell.

    태그


  • 오버디자인

  • 더 많은 정보







    결론



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

    학점



    Unsplash의 Brian Kostiuk 님의 사진


    I love software, because if you can imagine something, you can build it.



    레이 오지






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


    좋은 웹페이지 즐겨찾기