ITEM 5 : 항상 ToString()을 제공해라.

|

ITEM 5 . Always Provide ToString()

                 (항상 ToString()을 제공하라.)



■ 요약 및 장점


1.      Class ToString()을 재정의 함으로써, 해당 클래스를 사용하는 사용자들이 의미있는 정보를 사용할 수 있게 해야한다.


2.      복잡한 클래스 타입을 선언시에는 IFomattable.ToString()을 이용해서 구현하면 된다.


3.      IFomattable.ToString() 구현시에 IFormatProvider 파라미터는 기본적으로 NULL 이지만, 모든 포멧을 지원할 수 없으므로 사용자가 원하는 포멧을 사용자가 지정 할 수 있게 해준다.(ICustomerFormatter).


4.      IFomattable.ToString() 구현은 클래스 마다 특수하지만, 3가지의 조건을 지켜야 한다. 한가지는 “G” 포멧을 정의하는 것이고, 두번째는 빈 포멧(empty format)을 지원해야한다.( 포멧이 “” null로 왔을 때 처리해야 한다.).마지막 세번째는, “G”“” null은 오버라이드된 Object.ToString()과 같은 값을 리턴해야 한다.


5.      클래스에서 IFormattable 인터페이스를 구현했든 아니든 IFomatProvider ICustomFormatter를 생성할 수가 있다. 그래서 클래스 작성자가 적당한 ToString()을 지원하지 않아도 만들어서 사용할 수가 있다.


■ Terms


1.      BCL : Basic Class Library


■ 해석이 모호하거나 중요한 구문


1.      You can address that deficiency by implementing the IFormattable interface on your type.

       (당신은 당신의 타입에 IFommattable 인터페이스를 구현함으로써 결함을 다룰수 있다)


2.      You can create IFormatProvider and ICustomFormatter implementations for classes whether or not the class implemented the IFormattable interface.(클래스에서 IFormattable 인터페이스를 구현했든 아니든 IFomatProvider ICustomFormatter를 생성할 수가 있다)


■ 단어


1.      sophisticated : 세련된,교양있는/정교한,복잡한/지적인,수준높은

2.      Face it : 직시하다/부딧쳐 봐라

3.      a little ~: 약간의~

4.      pay off : 성과를 올리다[결실을 맺다]/갚다.

5.      even if/though : ~에도 불구하고,~라 하더라도

6.      deficiency : 결핍/결점,결함

7.      tabular : 표로 나타낸/정리된

8.      means :수단,방법/,재력,수입

9.      substitude : 대신하는 사람,대리자/대용물[]

10.    specific:구체적인,명확한,분명한/특정한

11.    at most : 기껏해야, 많아야

12.    companion:동반자, 한짝.

13.    verbose : 장황한

14.    whether or not : ~인지 아닌지/~이든 아니든.

15.    address:연설하다/다루다[고심하다]

16.    variation : 변화/차이.


■ 피드백 및 개인 의견


   :사용자가 클래스를 만들때 보통 ToString()을 제공하지 않는다.(저도 그렇습니다...)

     클래스를 만들때 class Instance.ToString()을 할때 그냥 클래스의 Type이 출력되는것이 아니라 재정의 해서 의미있는

     내용을 출력하는 것이 좋습니다. 


   또한 ToString()을 정의할때 포멧들을 정의해서 미리 정의된 형태로 출력을 해줄수 있습니다. 

    사용자가 특정한 형태대로 ToString()을 사용하고 싶을때는 ICustomFormatter를 이용해서 원하는 형태대로 출력이 가능하게 됩니다.


          DLL 식으로 외부에 클래스를 전달할때(협업작업) ToString()을 재정의 해서 의미있는 내용을 출력하게 하는 것이 좋은거 같습니다.

   



And