내가 참여한 프로젝트는 아키텍처 지향 프로젝트의 파일 / 폴더 구조를 가지고 있습니다.
Root
|____ Node1
|____ Event Handlers
| |___ <all event handlers of project>
|____ Events
| |___ <all events of project>
|____ Request Handlers
| |___ <all request handlers of project>
|____ Requests
| |___ <all requests of project>
|____ ...
시스템의 구조적 관점에서 분명하다 (개발팀이 제안한).
디자이너 팀이 제안한 기능 지향 구조입니다.
Root
|____ Feature #1
|____ Event Handlers
| |___ <all event handlers of Feature #1>
|____ Events
| |___ <all events of Feature #1>
|____ Request Handlers
| |___ <all request handlers of Feature #1>
|____ Requests
| |___ <all requests of Feature #1>
|____ ...
이 변형은 설계자에게 더 가까우며 구현할 기능을 명확하게 설명합니다.
우리 팀은 성전을 시작했습니다. 가장 좋은 방법은 무엇입니까? 누군가 우리를 도와 첫 번째와 두 번째의 단점과 장점을 설명 할 수 있습니까? 어쩌면 우리 둘 다에게 더 유용하고 유익한 세 번째 것이있을 것입니다.
감사합니다.
답변
두 번째 투표에 투표하겠습니다. 첫 번째 구조에서의 이벤트 핸들러는의 이벤트 핸들러와 FeatureA
완전히 관련이 없습니다 FeatureB
. 개발자가 한 번에 하나의 기능을 작업하는 것으로 보이며 요청을 처리 FeatureX
하는 FeatureX
경우 요청보다 요청 핸들러 를 조정해야 할 가능성이 훨씬 높습니다 FeatureZ
.
그건 그렇고, 당신이 중립적 관점 에서이 질문을 한 방법을 좋아합니다.
답변
저는 항상 두 번째 접근 방식에 더 편했지만, 항상 공유 / 기본 수업에 일반적 또는 공통이라고하는 “기능”을 가지고 있습니다.
두 가지 접근 방식은 진정으로 분리 된 사물을 유지하지만 “공통”영역이없는 경우에는 종종 사물을 적합하지 않은 영역으로 분리합니다.
답변
기능 발명자가 구현 세부 사항에 관심을 갖는 이유는 무엇입니까? 그것이 논쟁의 측면들 사이의 분리라면, 나는 그 대답이 분명하다고 생각합니다. 아이디어 / 기능을 발명하는 사람들은 구현자가 필요로하는 파일 구조를 결정하지 않습니다.
기능의 구현이 여러 dll, exe, 데이터베이스 또는 기타 소프트웨어에 걸쳐있을 때 특히 중요한 문제입니다.
답변
두 가지 옵션을 고려할 때 두 번째 접근 방식에 동의해야합니다. 첫 번째는 비정질 얼룩처럼 보입니다. 적어도 두 번째는 어떤 모양을 가지고 있습니다.
그것은 실제로 프로젝트의 규모에 달려 있습니다. “기능”이 큰 경우 각각 고유 한 버킷이 필요합니다.
답변
나는 당신이 사용하는 용어를 이해하지 못하지만 어쨌든 두 구조가 모두 잘못된 접근법 인 것처럼 보이기 때문에 대답하려고 시도합니다.
소수의 기능 만 가지고 있지 않는 한, 기능을 범주로 그룹화해야합니다. 이는 Node1이 의도 한 것이 아니라면 “프로젝트의 모든 X”가 제안하지 않는 한 어느 디자인에도 적용되지 않는 것으로 보입니다. 그렇지 않으면 WTF가 궁금합니다. Node2가 있습니까?)
다음과 같은 것을 고려할 수 있습니다.
Root
|____ Event Handlers
| |____ Category A
| | |___ Feature #1 EHs
| | |___ Feature #2 EHs
| | |___ Feature #3 EHs
| |
| |____ Category B
| | |___ Feature #4 EHs
| | |___ Feature #5 EHs
| |
|
|____ Events
| |____ Category A
| | |___ Feature #1 Events
| | |___ Feature #2 Events
| | |___ Feature #3 Events
| |
| |____ Category B
| | |___ Feature #4 Events
| | |___ Feature #5 Events
| |
|
아니면 이거:
Root
|____ Category A
| |____ Event Handlers
| | |___ Feature #1 EHs
| | |___ Feature #2 EHs
| | |___ Feature #3 EHs
| |
| |____ Events
| |___ Feature #1 Events
| |___ Feature #2 Events
| |___ Feature #3 Events
|
|____ Category B
| |____ Event Handlers
| | |___ Feature #4 EHs
| | |___ Feature #5 EHs
| |
| |____ Events
| |___ Feature #4 Events
| |___ Feature #5 Events
그러나 그들은 모두 완전히 벗어난 가정을하고 있습니다. 자세한 내용으로 질문을 업데이트 할 수 있다면 마음이 바뀔 수 있습니다. 🙂