그것에 대한 명확한 대답은 없습니다. 질문은 좁지 만 설명은 아닙니다.
제게는 원한다면 Occam 's Razor와 같은 것입니다. 현재 코드를 측정하려고 할 때 이상적입니다. 단순하고 간단한 단어로 정리하기는 어렵습니다. 또 다른 은유는»하나의 주제«는 추상적이며, 즉 이해하기 어려운»단일 책임«입니다. 세 번째 설명은 한 단계의 추상화를 다루는 것이다.
그것은 실제로 무엇을 의미합니까?
최근에는 주로 두 단계로 구성된 코딩 스타일을 사용합니다.
1 단계는 창조적 혼돈으로 가장 잘 묘사됩니다. 이 단계에서는 생각이 흐를 때 코드를 작성합니다.
2 단계는 완전히 반대입니다. 허리케인 후 청소하는 것과 같습니다. 가장 많은 노력과 훈련이 필요합니다. 그런 다음 디자이너의 관점에서 코드를 봅니다.
나는 주로 파이썬에서 일하고 있는데 나중에 객체와 클래스를 생각할 수 있습니다. 첫 번째 단계 I- 함수 만 작성하고 다른 모듈에서 거의 무작위로 전파합니다. 에서 단계 II 내가가는 일이있어 후에, 나는 어떤 모듈을 거래하는 솔루션의 부분에 대해 자세히 살펴 있습니다. 그리고 모듈을 살펴보면서 주제가 나에게 등장합니다. 일부 기능은 주제별로 관련되어 있습니다. 이것은 수업에 좋은 후보입니다 . 그리고 함수를 클래스로 바꾼 후-거의 들여 쓰기 self
로 파이썬에서 매개 변수 목록에 추가 합니다.)-나는 SRP
Occam의 면도기와 같은 기능을 사용하여 다른 모듈과 클래스에 기능을 제거합니다.
현재 예는 다른 날에 작은 내보내기 기능을 작성하는 것일 수 있습니다 .
지퍼 에 csv , excel 및 결합 된 excel 시트 가 필요했습니다.
일반 기능은 각각 세 가지 보기 (= 기능)로 수행되었습니다 . 각 함수는 필터를 결정하는 일반적인 방법과 데이터를 검색하는 두 번째 방법을 사용했습니다. 그런 다음 각 기능에서 내보내기 준비가 수행되어 서버에서 응답으로 전달되었습니다.
너무 많은 추상화 레벨이 혼합되었습니다.
I) 수신 / 발신 요청 / 응답 처리
II) 필터 결정
III) 데이터 검색
IV) 데이터 변환
쉬운 단계는 exporter
첫 번째 단계에서 레이어 II-IV를 처리 하기 위해 하나의 추상화 ( ) 를 사용하는 것 입니다.
요청 / 응답을 다루는 주제 만 남았습니다 . 동일한 추상화 수준에서 요청 매개 변수 를 추출 하는 것이 좋습니다. 그래서 저는이 관점에서 "책임"을 가지고있었습니다 .
둘째, 수출 업체를 분리해야하는데, 우리가 보았 듯이 적어도 3 개의 다른 추상화 계층으로 구성되었습니다.
결정 필터 기준 및 실제 retrival는 거의 동일한 추상화 레벨 (필터는 데이터의 적절한 서브 세트를 얻기 위하여 필요하다)에있다. 이러한 수준은 데이터 액세스 계층 과 같은 것으로 설정되었습니다 .
다음 단계에서는 실제 내보내기 메커니즘을 따로 분리했습니다. 임시 파일에 쓰기가 필요한 경우 디스크에 데이터를 실제로 쓰기위한 것과 실제 형식을 처리하는 다른 두 가지 "책임"으로 나누었습니다.
클래스와 모듈의 형성과 함께, 상황이 더 명확 해졌고, 무엇이 어디에 속해 있는지가 명확 해졌습니다. 그리고 수업 이 너무 많은지 여부는 항상 잠재 질문 입니다.
각 학급의 책임을 어떻게 결정하고 SRP와 관련하여 책임을 어떻게 정의합니까?
따라야 할 레시피를 제공하기는 어렵습니다. 물론, 나는 한 단계의 추상화 추상화를 반복 할 수있다.
대부분 나를 위해 그것은 현재 디자인으로 이어지는 일종의 "예술적 직관"입니다. 아티스트가 점토를 조각하거나 그림을 그리는 것처럼 코드를 모델링합니다.
내가 코딩 밥 로스 라고 상상해보십시오 .)