⏸ 이번 주를 마무리 하며 & 다음 주부터 시작되는 그룹 프로젝트를 앞두고 주요 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
이라는 추상 클래스를 선언하고, 이를 상속받은 클래스 dog
와 cat
을 만들면 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
- 모든 형태의 중복을 지양한다
- 중복 코드로 인한 복잡도를 줄이고 개발/유지 보수에 기여
내용 출처: 위키백과