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�� Ŭ���Ͻʽÿ�.  ï¿½×¸ï¿½ï¿½ï¿½ ���ϴ� �ʵ�� ĸ���� �־��� ���Դϴ�.