[디자인 원칙과 건의] 방법

6767 단어 설계 원칙
메서드
  1.하나의 방법 내의 코드는 30줄을 초과할 수 없다.
  • 대부분의 방법은 30줄 안에 끝낼 수 있다.
  • 이것은 개발자에게 디자인과 코드를 최적화하도록 강요하는 방식이다. 

  •   2.어떤 방법이 이상을 던지지 말아야 합니까?
  • 정적 구조 함수, 던진 후 전체 유형은 더 이상 사용할 수 없습니다.
  • 구조 함수.
  • 속성의 get 방법(일부 종류의 디자인은 이 특성에 어긋난다).
  • Dispose(이론적으로도 이상을 던져서는 안 되지만 일부 디자인은 이미 이상을 던졌다). 

  •   3.아직 실현되지 않은 방법은 NotImplemented Exception 이상을 던져야 합니다.
     
      
      4.호출되지 않은 방법을 제거합니다.
     
      5.방법명명은 Pascal명명을 추천합니다.
  • 추천 동사 + 명사 방식: GetUser, DisableUser
  • 만약에 유형의 실례적인 방법에 있어서 동사를 방법명으로 추천한다. 예를 들어 User.Create

  • 정적 방법 및 인스턴스 방법
      1.정적 방법은 반드시 라인이 안전해야 한다
  • 호출자는 정적 방법(예를 들어Console.Write)을 사용하고 호출자는 정적 방법이 라인이 안전하다고 예상한다
  •         public static Dictionary<string, object> dict = new Dictionary<string, object>();
    public static ConcurrentDictionary<string, object> concurrentDict = new ConcurrentDictionary<string, object>();
    public static void Test1()
    {
    if (!dict.ContainsKey("key"))//
    {
    dict["key"] = "value";
    }
    }
    public static void Test2()
    {
    concurrentDict["key"] = "value";// ,
    }

      
      
      2.만약 한 방법이this에 사용되지 않았다면, 성명을 정적 방법으로 고려하십시오
     
      3.기본 라이브러리와 일반적인 방법은 정적 방법으로 우선적으로 설계됩니다 (예를 들어 Log.error SqlHelper.execute)
     
      4.정적 방법을 선택해야 하는 이유
  • 프로세스를 위한 프로그래밍 용이
  • 정적 방법의 호출은 비교적 간단하고 new의 과정이 하나 없어졌다
  • 만약에 비교적 독립된 방법을 설계하고 싶다면
  • 정적 방법은 비교적 좋은 선택이고 정적 방법은 이식하기 쉽다
  • 성능 향상
  •     1.실행할 때 다중태를 판단할 필요가 없습니다. (계승 체인이 없는 문제)
        2.정적 방법을 호출하려면 실례 대상 지침을 전달할 필요가 없다
        3.실례적인 방법은 최소한 new의 대상이 필요하며 GC의 압력이 있다
     
      5.인스턴스 방법을 선택하는 이유
  • 와 대상을 위한 디자인의 결합이 비교적 좋다
  • 멀티태스킹 등을 통해 정적 방법보다 강력한 기능
  • 접근성
      1.성명 방법을 설명할 때 접근성을 명시하고 기본값을 사용하지 마십시오. 기본 접근성에 익숙하지 않은 개발자가 잘못하지 않도록
     
      
      2.최소한의 접근성을 유지합니다. 예를 들어private가 가능한 것은public를 사용하지 마십시오.
  • 제3자가 공공연하지 말아야 할 방법을 잘못 호출하지 않도록 한다
  • 제3자가 퍼블릭 방법을 인용한 후 재구성할 때 이 방법을 제거할 수 없음
  •   3. new 키워드를 부모 클래스로 복사하는 방법을 사용합니다. 일반적으로 동급 또는 비교적 높은 접근성을 유지해야 합니다.
     public class ClassA
    {
    public virtual void Test()
    {
    }
    }
    public class ClassC : ClassA
    {
    protected new void Test() //bad
    {
    }
    }

    방법 계승
      1.부모 클래스를 다시 쓰는 방법은 예상치 못한 다시 쓰기를 피하기 위해 new 키워드로 덮어써야 합니다
        public class ClassA
    {
    public void Test()
    {
    }
    }

    public class ClassB : ClassA
    {
    public new void Test()//good
    {
    }
    }

    public class ClassC : ClassA
    {
    public void Test() //bad
    {
    }
    }

      2.어떤 방법들은 함께 오버라이드를 받아야 한다. 예를 들어 IComparable.CompareToEquals, 또 예를 들면 연산자를 다시 쓸 때 = 와!=
      3.하위 클래스 오버라이드 방법이 실현되기를 바랄 때만virtual 키워드를 사용합니다
      4.구조 함수에서 허위 방법을 사용하지 마라
  • 가상 방법을 호출할 때 실행할 때까지 이 방법을 실행하는 실제 유형을 선택하지 않습니다.구조 함수가 허위 방법을 호출할 때, 이 방법을 호출하는 실례적인 구조 함수를 실행하지 않았을 수도 있습니다.

  •   5.Dispose 방법을 실현했다면 이 방법 체내에서 부류의 Dispose 방법을 사용하십시오
    대비하다
      1.및 속성 비교
  • 속성 반환 값이 상대적으로 고정적이므로 DateTime.Now는 나쁜 디자인입니다
  • .
  • 방법은 값이 상대적으로 동적이기 때문에Guid.New Guid () 는 좋은 디자인
  • 이다
    일부 컨텐트는 MSDN, FxCop 및 기타 타사 기사에서 참조됩니다.
    본인의 수준에 한계가 있으므로, 누락이나 오류가 있으면, 고수 여러분의 지적을 바랍니다.

    좋은 웹페이지 즐겨찾기