[others] 주요 Design/Dev 원칙

EMMA·2022년 3월 27일
0

⏸ 이번 주를 마무리 하며 & 다음 주부터 시작되는 그룹 프로젝트를 앞두고 주요 design/dev 개념 list up


0
Agile 기반 소프트웨어 개발 프로세스 중 하나, SCRUM

프로젝트 개발을 위한 점진적 개발 방법론
product backlog 서부터 product까지, sprint(개발 주기) 단위로 데일리 미팅을 거치며 실제 동작하는 제품을 개발한다
(결과물은 Minial Viable Product)
(Agile 방법론: 짧은 단위의 계획과 유연한 대처에 기반한 개발 업무)

1-1
SOLID 원칙, 객체 지향 설계

  • Single responsibility: 하나의 클래스는 하나의 책임만 갖는다
  • Open/closed: 확장에는 열려 있으나 변경에는 닫혀 있어야 한다
  • Liskov substitution: 객체는 정확성을 유지하면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다
  • Interface segregation: 특정 클라이언트를 위한 서비스 여러 개가 하나의 범용 서비스보다 낫다
  • Dependency inversion: 구체화가 아니라 추상화에 의존한다 (모든 모듈은 독립적이다)
    -> django 모델링에서 메타 클래스에 있는 abstract를 생각하면 됨
    -> 예를 들어, 클래스 dog와 클래스 cat을 만든다고 가정했을 때, 같은 동물이므로 겹치는 함수가 많을 것. 하지만 이를 하나하나 구체화해서 작성하는 것은 비효율적 (중복코드 등)
    -> 그래서 animal이라는 추상 클래스를 선언하고, 이를 상속받은 클래스 dogcat을 만들면 animal에서 정의한 공통 함수를 포함하면서 독립적인 2개의 db table 생성
    -> 참고 블로그1: https://fierycoding.tistory.com/42
    -> 참고 블로그2: https://dgkim5360.tistory.com/entry/django-model-inheritance

1-2
KISS, Keep it small and simple

  • 알기 쉽게 만들어라
  • 오컴의 면도날과 맥락을 같이 함 (불필요한 가정은 모두 잘라낸다)

1-3
YAGNI, You aren't gonna need it

  • "실제로 필요할 때는 무조건 구현하되, 그저 필요할 것이라고만 예상될 때는 구현하지 마라"

1-4
DRY, Don't repeat yourself

  • 모든 형태의 중복을 지양한다
  • 중복 코드로 인한 복잡도를 줄이고 개발/유지 보수에 기여

내용 출처: 위키백과

profile
예비 개발자의 기술 블로그 | explore, explore and explore

0개의 댓글