Encapsulate Fields Refactoring  

 

�� ������ ��ſ��� Encapsulate Fields  �����丵 ��ɿ� ���� ��������  overview��  how  �� �����丵�� IntelliJ IDEA���� ���� �� �ִ°��� �����մϴ�.

����


����� �����͸� �����, �׼��� �޼ҵ�(���� ���Ϳ� ���͸� �θ���)�� �����ϴ� �ܺ��� �������̽��� ���Ͽ� �װͿ� �׼����ϴ� ���� �Ϲ������� ���� IDEA�Դϴ�.  �Ŀ� ����� Ŭ������ �����ϴ� �ڵ�� �Բ� ���� ȣȯ���� �� ���� �޼ҵ带 �����ϰ� �ִ� ������ �����͸� ������ �� �ֽ��ϴ�. Encapsulate Fields  �����丵�� ��ſ��� ����� �����͸� �����, �ʿ��� �׼����� �����ϴ� ���� ����մϴ�.

���� ���, �츮�� ���� Ŭ������ �����ϴ�:

 
    public class Foo {
        public int field;
 
        public Foo(){
            field = 5;
        }
 
        public int calcValue(int value){
            return field + value;
        }
    }
 
    class Bar {
        private Foo foo;
 
        public int calcValue(int value){
            return foo.field + value;
        }
    }



�ʵ�field�� ĸ���� �־��� �� �Դϴ�. �����丵 ����, �ʵ�� ������ ���̰� �� ������ ����Ǹ� �׼��� �޼ҵ尡  �����˴ϴ�:

 
    public class Foo {
        private int field;
 
        public Foo(){
            setField(5);
        }
 
        public int calcValue(int value){
            return getField() + value;
        }
 
        public int getField(){
            return field;
        }
 
        public void setField(int field){
            this.field = field;
        }
    }
 
    class Bar {
        private Foo foo;
 
        public int calcValue(int value){
            return foo.getField() + value;
        }
    }


����� �Ƹ���  Use accessors even when the field is accessible �� ���� �����ϴ� �Ϳ� ���� �ʵ尡 ���̴� ������ �׼����� ������� �ʴ� ���� ������ ���� �ֽ��ϴ�.

Encapsulating Fields  


�ʵ带 ĸ���� �ֱ� ���Ͽ�:

 1.   Project ���⿡��
Ŭ������ �����ϰ� ������ ��ư�� Ŭ���ϴ� �Ϳ� ���� �ҷ����� �˾� �޴����� Refactor |  Encapsulate Fields... �� Ŭ���Ͻʽÿ�.
OR
�ʵ带 �����ϰ� ������ ��ư�� Ŭ���ϴ� �Ϳ� ���� �ҷ����� �˾� �޴����� Refactor |  Encapsulate Fields... �� Ŭ���Ͻʽÿ�.


����� Ŭ���� �Ǵ� �ʵ带 �����ϱ� ���� �ٸ� ��� ����, ���� ��� Structure �� ����� �� �ֽ��ϴ� .


editor ���� : 
���ϴ� �ʵ忡���� ij���� ��ġ�ϰ�, ���� �޴����� �Ǵ� �����Ϳ��� ������ ��ư�� Ŭ���ϴ� �Ϳ� ���� �ҷ����� �˾� �޴�����Refactor |  Encapsulate Fields �� Ŭ���մϴ�.
OR

������ Ŭ������ ������ ��� ��ҿ��� ij���� ��ġ�ϰ�, ���� �޴����� �Ǵ� �����Ϳ��� ������ ��ư�� Ŭ���ϴ� �Ϳ� ���� �ҷ����� �˾� �޴�����Refactor |  Encapsulate Fields �� Ŭ���մϴ�.

 2.   �� ��, ���� ������� �����丵 �Ű� ������ �����ϱ� ���� ��Ÿ�� ���Դϴ�.  ���� �ʵ尡 ������ ���õǸ� �׵��� �� ���̾�α� �����쿡�� ���õ� ���Դϴ�.



Encapsulate Fields  ���̾�α״� �Ʒ� ����� ������ �ɼ� �׷��� �����ϴ�:

Fields to  Encapsulate  

�� �ɼ� �׷��� Getter �� Setter  �޼ҵ忡 ���� �̸��� �Բ� Ŭ�������� �ʵ��� ����� �����մϴ�.  ���⿡���� ����� �ʿ��� �ʵ带 ������ �� �ֽ��ϴ�.  ���� ����� �װ��� Ŭ���ϴ� �Ϳ� ���� �޼ҵ� �̸��� ������ ������ �� �ֽ��ϴ�.
���� ���� �ñ׳����� �ִ� �޼ҵ尡 ������ �� Ŭ������ �̹� �����ϸ�, Method �������� �����ϴ� ���ü� �����ܰ� �Բ� �׼��� �̸��� �������� ��Ÿ���ϴ�.  � ���ο� �׼��� �޼ҵ嵵 �� ��� �������� ���� ���Դϴ�.  ���� �޼ҵ�� ������� ���� ���Դϴ�. �׸��� �Ϲ�������, �� ���� �ƹ��͵� �ΰ������� Ȯ�ε��� ���� ���Դϴ�.  �� ��� ���� �޼ҵ尡 �׼����� ������ ����� �ϴ��� ����� �����ؾ߸� �մϴ�.  �׷��� ������, ����� �׼����� �� �ٸ� �̸��� �����ϰų� �����ͷ� ���ƿ� �ʿ䰡 �������� �𸣰�, ���� �޼ҵ带 ���������� �𸣸�, ������ �� ���� Encapsulate Fields �����丵�� �ٽ� ȣ�������� �𸨴ϴ�. ���� ���� �޼ҵ尡 �θ� Ŭ������ �޼ҵ带 �������̵� �ϰų� �Ǵ� �����Ѵٸ�, �װ��� Overrides method     �Ǵ�  Implements method     ���������� ��ũ�� �� �Դϴ�.

������ �޼ҵ尡 ������� Ŭ������ �ȿ� �������� ������ �׷��� ���� �����Ǿ��ٸ�, ���� �װ��� �θ� Ŭ������ �޼ҵ带 �������̵� �ϰų� �Ǵ� �����ϴ� ���� �����Ѵٸ�, �׷� �޼ҵ�� ������ �׼��� �̸��� ���ʿ� Overrides method     �Ǵ� Implements method     ���������� ��ũ�� �� �Դϴ�. ���ο� �׼��� �޼ҵ�� ������ ���Դϴ�.  �׷���, ����� �̰��� �׼��� �޼ҵ带 ���Ӱ� �����ߴٴ� ����� �ݵ�� ����� �װ��� ��ȹ�ߴ� ���� �ƴ����� �𸣴� �θ� Ŭ������ �޼ҵ带 ������ �������̵� �ϰų� ������ ���� ���� �˰� �־�߸� �մϴ�.  �� ���, ����� �׼����� �� �ٸ� �̸��� �����ϰų� �����Ϳ� ���ƿ� �ʿ䰡 �������� �𸣰�, ���� �޼ҵ带 ���������� �𸣰�, ���� �� ���� Encapsulate Fields �����丵�� �ٽ� ȣ�������� �𸨴ϴ�.

Encapsulate  

�� �ɼ� �׷��� ����� ���ϴ� �ʵ带 ���Ͽ� �����DZ⸦ ���ϴ� �׼��� �޼ҵ�( Getter  , Setter  �Ǵ� �Ѵ�)�� �װ��� �����ϴ� ���� ����ڿ��� ����մϴ�.  ���� üũ �ڽ� ���� �� ���� Fields to Encapsulate ���� ��ü �����ϴ� Į��(Getter �Ǵ� Setter  )�� ���� �����Ǹ� ���̺��� ȸ������ �� ���Դϴ�.

�ɼ�

���� Use accessors even when the field is accessible�� ���õ��� ������, �ʵ尡 ���� �׼��� ������ �� �ִ� ���ϴ� �ʵ忡�� ������ �ٲ��� ���� ���Դϴ�.  �׷��� ������, ���� üũ �ڽ��� ���õǸ� ���ϴ� �ʵ忡�� ��� ������ �׼��� �ݷ� ��ü�� ���Դϴ�.  �װ͵� �Ʒ��� ����� Encapsulated Fields' Visibility ���� ����� ���ÿ� �����մϴ�.

���� ���, ���� ����� Use accessors even when the field is accessible üũ �ڽ��� ���� �����ϰ�, �ʵ带 ���� private �� ���ü��� �����ϸ�, Ŭ���� ������ �׵��� ���� ������ ���� ���� ���� ���� Ŭ���� �ٱ����� �ʵ��� ����� ����� ���Դϴ�.

Encapsulated Fields'  Visibility  

�� �ɼ� �׷��� �����丵 ���� �ʵ尡 ���� ���ϴ� �ʵ带 ���� ���ü� �������� �����ϱ� ���� ���˴ϴ�:

 Private  

 
Package local  

 
Protected  

 
Retain visibility as previously set  


�� ��� Use accessors even when the field is accessible üũ �ڽ��� �Ұ����ϰ� �˴ϴ�.

Accessors' Visibility 

�� �ɼ� �׷��� ���ü� ������ ������ �׼��� �޼ҵ忡 ���߱� ���� ���˴ϴ�:

 Public  

 
Protected  

 
Package local  

 
Private  

����� �̸� ���� ���

üũ �ڽ��� �����ϸ� ��ſ��� � ����� �߰ߵǾ����� ��� ����ϰ� �ְ�, �׵��� ��ü�� �����ϵ��� ����մϴ�. �� üũ �ڽ��� ���õ��� ���� ��, IDEA�� ��ü�� �ڵ������� �����մϴ�.


������ üũ �ڽ��� Ȯ�ε��� �ʾ��� ����, ���� �߰ߵ� ����� � �б� ���� ���Ͽ��� �����ϸ� ��ſ��� ��� ��ü�� Ȯ���ϱ� ���� ������Ʈ �� �� �Դϴ�.


Refactoring Preview ���̾�α׿��� (���� �װ��� ��Ÿ����) ����� ����� ������ �м��� �� �ֽ��ϴ�.  �����丵�� �Բ� �����ϱ� ���ؼ�, Do Refactor�� Ŭ���մϴ��׷��� �ʴٸ� Cancel �� Ŭ���մϴ�. ���� ���� ������ Refactoring Preview�� ���ʽÿ�.


OK�� Ŭ���Ͻʽÿ�.  �׸��� ���ϴ� �ʵ�� ĸ���� �־��� ���Դϴ�.