Skip to content

Usage guide

이 문서에서는 SaigeToolkit을 사용해 개발할 때 유의할 사항에 대해 설명합니다.


DO

  • SaigeToolkit의 기능을 사용할 때에는 가능한 한 제공되어 있는 인터페이스를 활용해 주세요.

    • 예: SaigeToolkitTransform 클래스를 사용할 때, 내부 구조를 알고 있어도 내부 attribute에 직접 접근하지 말고 (self.transform.image_loader.load(...) 등), 공개적으로 제공되어 있는 메서드를 활용해 주세요. 이는 추후 Transform 클래스의 내부 구조가 변경되어도 사용자 코드가 변경되지 않도록 도와줍니다.
    • 또한 예상되는 범위를 벗어나는 사용에 대해서는 전부 테스트를 하는 것이 불가합니다.
    • 만약 제공되는 인터페이스가 부족하다고 판단되면, PR을 통해 해당 인터페이스를 확장해 주세요.
  • 타 레포의 구현을 copy & paste 하기 전에 공통 인터페이스로 묶일 수 있는지 확인하세요.

    • 예: 각 레포에 구현되어 있는 ValidationHandler 등.
    • 공통 인터페이스로 묶일 수 있는 경우, SaigeToolkit에 PR을 통해 해당 인터페이스를 추가해 주세요.
    • 복사 붙여넣기로 흩어져 있는 코드는 추후 유지보수가 어렵습니다.
  • 코드 작업 중 SaigeToolkit의 동작을 함께 변경해야 하는 경우엔, editable 모드로 SaigeToolkit을 설치해 테스트 할 수 있습니다.

    • 타 레포의 개발 환경에서 다음 명령어를 실행해 주세요.
      git clone https://SaigeResearch@dev.azure.com/SaigeResearch/Research/_git/SaigeToolkit
      cd SaigeToolkit/
      python setup.py develop
      
    • 이후 타 레포에서 SaigeToolkit을 import하면 로컬 변경사항이 즉시 반영되며, 소스코드 링크 또한 패키지 설치 경로가 아닌 로컬 경로로 연결됩니다.

DON'T

  • SaigeToolkit에 이미 존재하는 기능을 같은 이름으로 재구현하지 마세요.
    • 예: SaigeToolkitPolygonCropper를 타 레포에서 동일한 이름으로 재구현하지 마세요.
    • 동일한 기능이라면 툴킷 기능 재사용을, 새로운 기능이라면 충분히 설명적인 이름을 붙여 주세요. 툴킷의 기능을 상속받아 확장하는 것도 고려해 주세요.