필드 캡슐화 리팩터링(C#)

필드 캡슐화 리팩터링 작업을 사용하면 기존 필드에서 신속하게 속성을 만든 다음 문제 없이 코드를 새 속성에 대한 참조로 업데이트할 수 있습니다.

필드public이면 다른 개체가 해당 필드에 직접 액세스하고 수정할 수 있으며 해당 필드를 소유하는 개체는 이 사실을 알지 못합니다. 속성을 사용하여 이 필드를 캡슐화하면 필드에 직접 액세스하지 못하게 할 수 있습니다.

새 속성을 만들 때 필드 캡슐화 작업에서는 캡슐화하려는 필드의 액세스 한정자를 private으로 변경한 다음 해당 필드에 대해 getset 접근자를 생성합니다. 어떤 경우에는 get 접근자만 생성되는 경우도 있습니다(예: 필드가 읽기 전용으로 선언된 경우).

리팩터링 엔진은 필드 캡슐화 대화 상자의 참조 업데이트 섹션에 지정된 영역에서 코드를 새 속성에 대한 참조로 업데이트합니다.

필드에서 속성을 만들려면

  1. EncapsulateFieldExample이라는 콘솔 응용 프로그램을 만들고 Program을 다음 예제 코드로 바꿉니다.

    class Square
    {
        // Select the word 'width' and then use Encapsulate Field.
        public int width, height;
    }
    class MainClass
    {
        public static void Main()
        {
            Square mySquare = new Square();
            mySquare.width = 110;
            mySquare.height = 150;
            // Output values for width and height.
            Console.WriteLine("width = {0}", mySquare.width);
            Console.WriteLine("height = {0}", mySquare.height);
        }
    }
    
  2. 코드 및 텍스트 편집기의 선언에서 캡슐화하려는 필드 이름에 커서를 놓습니다. 아래 예제에서는 커서를 width에 놓습니다.

    public int width, height;
    
  3. 리팩터링 메뉴에서 필드 캡슐화를 클릭합니다.

    필드 캡슐화 대화 상자가 나타납니다.

    바로 가기 키 Ctrl+R, E를 입력해도 필드 캡슐화 대화 상자가 표시됩니다.

    커서를 마우스 오른쪽 단추로 클릭하고 리팩터링을 가리킨 다음 필드 캡슐화를 클릭하여 필드 캡슐화 대화 상자를 표시할 수도 있습니다.

  4. 설정을 지정합니다.

  5. Enter 키를 누르거나 확인 단추를 클릭합니다.

  6. 참조 변경 내용 미리 보기 옵션을 선택한 경우 참조 변경 내용 미리 보기 창이 열립니다. 적용 단추를 클릭합니다.

    다음의 get 및 set 접근자 코드가 소스 파일에 표시됩니다.

    public int Width
    {
        get { return width; }
        set { width = value; }
    }
    

    Main 메서드의 코드도 새 Width 속성 이름으로 업데이트됩니다.

    Square mySquare = new Square();
    mySquare.Width = 110;
    mySquare.height = 150;
    // Output values for width and height.
    Console.WriteLine("width = {0}", mySquare.Width);
    

설명

필드 캡슐화 작업은 커서가 필드 선언과 같은 줄에 있는 경우에만 수행할 수 있습니다.

선언에 필드를 여러 개 선언하는 경우 필드 캡슐화 작업에서는 각 필드를 쉼표로 구분하고 커서와 같은 줄에서 커서와 가장 가까이에 있는 필드에 대해 리팩터링을 시작합니다. 선언에서 해당 필드의 이름을 선택하여 캡슐화하려는 필드를 지정할 수도 있습니다.

이 리팩터링 작업을 통해 생성되는 코드는 필드 캡슐화 코드 조각 기능에 의해 모델링됩니다. 코드 조각은 수정할 수 있습니다. 자세한 내용은 방법: 코드 조각 관리을 참조하십시오.

참고 항목

참조

Visual C# 코드 조각

개념

리팩터링(C#)