간단하고 깨끗한 C# 메소드 디자인 사례: SFCUI.AjaxValue () 의 2

2815 단어 ASP.netMVCLINQ.net
먼저 원칙을 되새기다.
최소 정보 원칙: 방법 인터페이스는 가장 필요한 업무 정보만 전달해야 한다.
두 가지 측면으로 구성됩니다.
1. 기술 정보가 노출되지 않도록
2. 업무 정보를 중복해서는 안 된다.
비즈니스 정보 분석
먼저 기술 문제를 상관하지 말고 이 일을 하려면 어떤 데이터가 있어야만 완성할 수 있는지 생각해 보세요.
1. 원래 값이 얼마예요?
2. 가능한 값(선택용)
3. 값을 누르면 어떤 조작을 해야 하는가(이것은 핵심 업무이다)
4. 되돌아와서 뭘 할까(리셋용)
또 몇 가지 문제가 있는데 어디 갔지?
5. 되돌아오는 값이 어디로 갱신됩니까?이 호출자는 상관하지 않는다. 그는 우리에게 디스플레이도 우리가 표시하는 것 (예를 들어 DIV) 이라고 안배했다. 리셋은 자연히 우리가 표시하는 위치를 리셋하는 것이다.
6. 되돌아와서 아무것도 하지 않으면 어떡하죠?알아서 해.
최종 방법 인터페이스는 다음과 같습니다.
   
   
   
   
  1. print?public static MvcHtmlString AjaxValue(int id, string value, string[] values, string urlFormat, string ajaxOnSuccess = null)   

아이디가 왜 이렇게 많아졌어?이런 Ajaxalue를 여러 개 표시해야 하기 때문에 ID로 구분합니다.urlFormat가 뭐예요?그는 생성된 Ajax 링크의 형식을 정의하는 데 사용됩니다. 다음 호출을 보십시오(약간의 문제가 있음).
   
   
   
   
  1. [email protected](story.ID, effortValue.ToString(), Effort.EffortPlannedValues, "/SFC/Efforts/AjaxSetEffortPlanned?itemID=" + story.ID + "&value={0}", ajaxOnSuccess: "refreshLeftPad");   

이 몇 개의 매개 변수의 순서 설명은:story.ID 수정자 값, effrotValue 현재 값...EffortPlannedValues 가능한 값, "..."AjaxLink의 href 형식 {0} 안에 선택된value가 놓여 있습니다. ajaxOnSuccess는 호출된 함수를 정확하게 되돌려줍니다.
인터페이스 설계 원칙의 분석
이론적으로 말하자면 어떤 cshtml에 이 말을 놓으면 모든 업무 정보를 갖추고 나머지는 모두 기술 문제이다. 이 방법에서 해결하고 바깥은 일체 상관하지 않는다. 이를'기술 정보는 노출되지 마라'는 원칙이라고 한다.왜 앞에서'약간의 문제가 존재한다'고 말합니까?스토리 때문에.ID는 이 안에 두 번 나타났습니다. 첫 번째는 하나의 정수 매개 변수가 전달되었고 두 번째는 urlFormat가 전달되었습니다. 두 번째는 불필요한 매개 변수로 바뀌어야 합니다.
   
   
   
   
  1. [email protected](story.ID, effortValue.ToString(), Effort.EffortPlannedValues, "/SFC/Efforts/AjaxSetEffortPlanned?itemID={0}&value={1}", ajaxOnSuccess: "refreshLeftPad");   

이렇게 하면 안에 id를 0에 놓고, 1에value를 놓으면 AjaxLink를 조합할 수 있다.
이제 알파벳과 문장부호 정보 하나를 더 삭제하면 부족하다. 이를'업무정보 중복불가'서브원칙이라고 한다.
이 원칙을 파악하면 인터페이스의 매개 변수(본인은'외관'이라고 부른다)를 가장 먼저 확인하고 작성을 시작할 수 있다.
물론 처음에 가장 세련된 인터페이스를 쓸 수 없을 때가 있다. 그러면 먼저'산적'하고 함수인지 DIV인지 한 무더기인지 먼저 쓰고 나서 다 쓴 다음에 가장 간단한 형식으로 봉인해 볼 수 있다.
다음 편에서는 AjaxLink의 실현에 대해 대략적으로 이야기할 것이다.

좋은 웹페이지 즐겨찾기