2014-02-07 3 views
0

단위 테스트를 작성하는 정적 클래스 만들기. 내가 정적 속성 또는 정적 메서드를 사용할지 여부를 모르겠습니다.클래스에서 사용할 속성 또는 메서드를 결정하는 방법

아래 코드를 참조하여 알려주십시오.

1) MailParterDummies (정적 속성 하나)

public static class MailPartnerDummies 
{ 
    public static IEnumerable<MailingPartner> MailingPartners 
    { 
     get 
     { 
      int index = 0; 
      IList<MailingPartner> mailingPartners = new List<MailingPartner>(); 
      for (int i = 0; i < _text.Count(); i++) 
      { 
       var mailingPartner = new MailingPartner(); 

       index = index > _text.Count() ? 0 : index; 

       mailingPartner.MailingPartnerID = i + 1; 
       mailingPartner.ContactName = _text[index]; 
       mailingPartner.OrganisationName = _text[index]; 
       mailingPartner.FullAddress = _text[index]; 
       mailingPartner.Town = _text[index]; 
       mailingPartner.County = _text[index]; 
       mailingPartner.Country = _text[index]; 
       mailingPartner.PostalZipCode = _text[index]; 
       mailingPartner.TelephoneNumber = i + 1; 
       mailingPartner.EmailAddress = _text[index]; 
       mailingPartner.WebsiteAddress = _text[index]; 
       mailingPartner.AddedOn = DateTime.Now; 
       mailingPartner.AddedBy = _text[index]; 
       mailingPartner.UpdatedOn = DateTime.Now; 
       mailingPartner.UpdatedBy = _text[index]; 

       mailingPartners.Add(mailingPartner); 
       index ++; 
      } 

      return mailingPartners; 
     } 
    } 



    #region fake variables 

    private readonly static string[] _text = { "Test1", "Test2", "Test3" }; 

    #endregion 
} 

2) MailParterDummies (정적 방법으로 하나)

public static class MailPartnerDummies 
{   
    public static IEnumerable<MailingPartner> MailingPartnerList() 
    { 
     int index = 0; 
     IList<MailingPartner> mailingPartners = new List<MailingPartner>(); 
     for (int i = 0; i < _text.Count(); i++) 
     { 
      var mailingPartner = new MailingPartner(); 

      index = index > _text.Count() ? 0 : index; 

      mailingPartner.MailingPartnerID = i + 1; 
      mailingPartner.ContactName = _text[index]; 
      mailingPartner.OrganisationName = _text[index]; 
      mailingPartner.FullAddress = _text[index]; 
      mailingPartner.Town = _text[index]; 
      mailingPartner.County = _text[index]; 
      mailingPartner.Country = _text[index]; 
      mailingPartner.PostalZipCode = _text[index]; 
      mailingPartner.TelephoneNumber = i + 1; 
      mailingPartner.EmailAddress = _text[index]; 
      mailingPartner.WebsiteAddress = _text[index]; 
      mailingPartner.AddedOn = DateTime.Now; 
      mailingPartner.AddedBy = _text[index]; 
      mailingPartner.UpdatedOn = DateTime.Now; 
      mailingPartner.UpdatedBy = _text[index]; 

      mailingPartners.Add(mailingPartner); 
      index++; 
     } 

     return mailingPartners; 
    } 


    #region fake variables 

    private readonly static string[] _text = { "Test1", "Test2", "Test3" }; 

    #endregion 
} 

는 I 1을 사용해야한다) 또는 2)? 감사합니다. .

+2

정말 중요하지 않습니다. 아마도 GetMailingPartnerList() 메소드의 이름을 지정하겠습니다. –

+0

테스트를 다시하기 위해이 글을 쓰고 있으므로 테스트를 더 쉽게 읽을 수있는 방법을 생각해 볼 것입니다. – Hammerstein

+0

당신이 원하는대로 사용하면 문제가되지 않습니다. :) –

답변

1

이 방법을 사용하십시오.

Microsoft의 Rico Mariani에 따르면 속성은 요청한 값을 반환하는 것 외에는 다른 작업을 수행해서는 안됩니다. 예제에서 수행하는 데이터 처리가 필요한 경우에는 메소드를 사용하십시오.

이렇게하면 호출 코드와 명확하게 통신하여 후드에서 수행되는 작업이 있습니다.

는 리코의 기사에서보세요 : Performance Guidelines for Properties

인용구 :이 필드처럼 많이 보일 것

그래서, 당신은 속성을 사용하고, 기억해야 할 가장 중요한 것은 입니다 모든면에서. 필드처럼 보이고 필드처럼 느껴지면 사람들은 필드처럼 수행 할 것으로 기대합니다. 따라서 염두에두고 :

  • 속성에 액세스하면 메모리가 할당되어서는 안됩니다. 사람들은 당신이 제시하고있는 데이터 구조가 무엇이든 걸어 다니는 루프에서이 것을 사용하려고합니다. 그들은이 데이터가 주위에 앉아 있고 에 액세스 할 것으로 예상합니다. "동기화"안 속성을 액세스

  • - 당신이 어떤 객체를 인수 한 시간, 한 필드보다 더 높은 수준에서 수행해야 할 어떤 잠금이있는 경우는 의 속성이 있습니다 그것은 이미 그것을 읽는 것이 안전해야합니다.

  • 재산에 액세스하는 것은 I/O를 수행하지 않아야합니다. 특히 네트워크 입출력이 아니어야합니다. 다시 말해 위에서 설명한대로 속성을 읽을 때까지는 I/O가 무엇이든 수행해야합니다. 필요합니다.

  • 속성에 액세스하는 것은 O (1)보다 복잡한 작업이 있어서는 안됩니다. 이는 루프가 없음을 의미합니다. 조금도. 우리가 "indexer"이지만 더 높지는 않은 속성에 대해 이야기하는 경우 O (lg (N))만큼 높은 숫자로 을 울릴 수 있습니다. 속성에 액세스하면 부작용이 없어야합니다 (예 :그것은 엄격하게 읽기 작업, 그것은 아무것도) 당신이 인덱서) 일정한 시간 조회를 할 경우 (개체 상태와 인수를 사용할 수 있습니다 왼쪽, 또는있어 무엇

스터링 변경있어 시간이 최악의 경우, 이미 존재하는 데이터 구조와 즉시 결과를 반환합니다. 그게 전부 야.

관련 문제