태그 보관물: project-structure

project-structure

건축 (구조) 중심 대 기능 중심 프로젝트 구조 |

내가 참여한 프로젝트는 아키텍처 지향 프로젝트의 파일 / 폴더 구조를 가지고 있습니다.

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

그러나 그들은 모두 완전히 벗어난 가정을하고 있습니다. 자세한 내용으로 질문을 업데이트 할 수 있다면 마음이 바뀔 수 있습니다. 🙂


답변