2012-02-02 4 views
2

다릅니다.몇 줄의 코드가 asp.net mvc3 컨트롤러에 너무 많습니까?

a) 물론 프로젝트 전체가 하나의 .dll로 바뀌었기 때문에 코드가 300 인 7 개의 컨트롤러와 2100 개의 코드가있는 컨트롤러가 있다면 성능면에서 중요합니까? (우려의 분리가 없다면 분명히 가독성과 단단한 결합이 문제 됨)

b) 관심의 분리가 고려되는 한, 한 컨트롤러의 코드 줄 수가 문제가되지 않습니까?

c) 하나의 컨트롤러에서 몇 줄의 코드가 리 팩터를 필요로 할 수 있습니까? (5001000500010000)?

+0

맨 처음 문장에 못 박았습니다. 코드 크기가 성능에 거의 영향을 미치지 않는다고 말할 것도없고, 성능이 전혀 문제가되지 않아야합니다. 그렇다면 완전히 다른 세분화로 수행됩니다.) 그리고 자신의 질문에 답했습니다. – delnan

+0

@delnan - 의견을 주셔서 감사합니다, 내 주요 관심사는 웹 응용 프로그램과 관련된 문제 일 수 있습니다. –

+0

이것은 건설적인 질문입니다 ... thum의 좋은 규칙이 무엇인지 물어 보는 것이 좋습니다 ... 내 대답은 구체적인 참조와 경험을주었습니다. 그래서 질문을 닫는 것은 건설적인 것이 아니 었습니다. –

답변

8

바보는 컴퓨터가 이해할 수있는 코드를 작성할 수 있습니다. 좋은 프로그래머는 인간이 이해할 수있는 코드를 작성합니다. --Martin 파울러는 [source]

나는 한 페이지이었다 기존 ASP에서 응용 프로그램을 본 기억이. 입력 된 매개 변수에 따라 다르게 렌더링됩니다. 이론적으로 ASP.NET MVC에서도 동일한 작업을 수행 할 수 있습니다.보기가 많은 단일 컨트롤러를 만들거나 컨트롤러 입력에 따라 변경되는 단일보기를 악화시킬 수 있습니다.

부여 된 수퍼 컨트롤러는 작업을 작업으로 나눕니다. 그러나 상관없이, 당신은 여전히 ​​큰 것을 가지고 일하고 있습니다.

첫 번째 SOLID Principle은 단일 책임입니다. 모듈에는 변경해야 할 이유가 하나만 있어야합니다. 큰 컨트롤러는 나에게 두 가지를 알려줍니다

  1. 그것은 너무 많은
  2. 행동이 가지고 함께 참여하고 너무 많은 로직

수행하는 컨트롤러가 너무 많은이 있기 때문에이 두 SRP 위반이다 변화해야 할 한 가지 이유. 논리를 변경하거나 상호 작용하는 객체가 변경 될 때 너무 많이 수행해야하는 동작은 변경해야합니다.

나에게 컨트롤러 액션은 서비스 (인터페이스, 웹 서비스 등)에 대한 함수를 호출하고 그 호출 결과를 반환해야합니다. 대부분의 컨트롤러 동작은 무려 두 줄의 코드입니다. 그리고 내 컨트롤러의 대부분은 그들이하는 일에 매우 집중하고 있습니다.

일반적으로 한 클래스 (글꼴 크기 및/또는 해상도에 따라 약 200 줄)에 두 페이지 이상 스크롤해야 할 때 불편합니다. 실제 길이보다 더 중요한 것은 컨트롤러에 얼마나 많은 책임이 있는지입니다. 책임을 최소화하고 파일 크기를 자동으로 줄입니다.

+0

대답 해 주셔서 감사합니다. 이것은 제가 궁금해했던 것과 거의 일치합니다. 내 콘트롤러가 300 개가 넘는 라인을 가지지 않으려 고하며 Unity가 DI 컨테이너처럼 가능한 한 작게 확실히 작습니다. –

+0

롤, 좋은 마틴 파울러 인용구 :) –

관련 문제