ÀÌ ¼½¼ÇÀº Use Interface Where
Possible ¸®ÆÑÅ丵¿¡ ´ëÇØ ´ç½Å¿¡°Ô Æ÷°ýÀûÀÎ overview¿Í how
ÀÌ ¸®ÆÑÅ丵 ±â´ÉÀÌ IntelliJ IDEA¿¡¼ »ç¿ëµÉ ¼ö Àִ°¡¸¦ Á¦°øÇÕ´Ï´Ù.
Use Interface Where Possible ¸®ÆÑÅ丵 ±â´ÉÀº »ç¿ëÀÚ¿¡°Ô º£À̽º Ŭ·¡½º/ÀÎÅÍÆäÀ̽ººÎÅÍ Á¶»ó Ŭ·¡½º ¶Ç´Â °°Àº ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ´Â ³»ºÎ Ŭ·¡½ºÀÇ ÀνºÅϽº·Î ÆÄ»ýÇÑ Á¤ÀÇ ¸Þ¼ÒµåÀÇ ½ÇÇàÀ» À§ÀÓÇÏ´Â °ÍÀ» Çã¶ôÇÕ´Ï´Ù.
¿¹¸¦ µé¸é, ´ç½ÅÀº ´ÙÀ½ Ŭ·¡½º¸¦ °¡Áý´Ï´Ù:
public class ClassParent {
void method1(){
//some code here
}
void method2(){
//some code here
}
}
public class ClassChild extends ClassParent
{
void method1() {
super .method1();
}
void method2() {
super .method2();
}
}
public class UsageClass {
void myMethod(){
ClassChild classChild = new ClassChild();
classChild.method1();
classChild.method2();
}
}
ClassChild¿¡¼ ¸®ÆÑÅ丵À» Àû¿ëÇϽʽÿÀ. UsageClass ´Â ´ÙÀ½°ú °°ÀÌ º¯°æµÉ °ÍÀÔ´Ï´Ù:
public class UsageClass {
void myMethod(){
ClassParent classChild = new ClassChild();
classChild.method1();
classChild.method2();
}
}
°¡´ÉÇϸé ÀÎÅÍÆäÀ̽º ¶Ç´Â ½´ÆÛŬ·¡½º¸¦ »ç¿ëÇϱâ À§Çؼ:
1. ¿¡µðÅÍ ¶Ç´Â ¸Þ¼Òµå°¡ ºÎ¸ð Ŭ·¡½º ¶Ç´Â ÀÎÅÍÆäÀ̽º·Î À§ÀÓµÈ º¸±â ( Project, Commander ) ÁßÀÇ Çϳª¿¡¼ Ŭ·¡½º À§ÀÇ Ä³·µÀ» ¼³Á¤ÇÏ°í ¸ÞÀÎ ¸Þ´º, ¶Ç´Â ¿À¸¥ÂÊ ¹öưÀ» Ŭ¸¯ÇÏ¿© ºÒ·ÁÁö´Â ÆË¾÷ ¸Þ´º¿¡¼ Refactor |
Use Interface Where Possible¸¦ Ŭ¸¯ÇϽʽÿÀ.
2. ´ç½ÅÀº Use
Interface Where Possible ´ÙÀ̾ó·Î±×¸¦ º¼ °ÍÀÔ´Ï´Ù.

Change Usages of <your_package_name>.<your_class_name>
to
|
´ç½ÅÀÌ »ç¿ëÇÒ Çʿ䰡 ÀÖ´Â °¡¿ëÇÑ ºÎ¸ð Ŭ·¡½º/ÀÎÅÍÆäÀ̽ºÀÇ ¸ñ·ÏÀ¸·ÎºÎÅÍÀÇ ¼±ÅÃÇϽʽÿÀ.
|
Use interface/superclass in instanceof
|
¸¸ÀÏ ¼±ÅõǸé, IDEA´Â ¼±ÅÃµÈ ½´ÆÛŬ·¡½º/ÀÎÅÍÆäÀ̽º¸¦ À§ÇÑ instanceof ½ºÅ×ÀÌÆ®¸ÕÆ®ÀÇ Á¸À縦 À§ÇØ È®ÀÎÇÒ °ÍÀ̰í, ¸¸ÀÏ ¹«¾ð°¡ ¹ß°ßµÇ¸é ±×°ÍÀ» º¯°æÇÒ °ÍÀÔ´Ï´Ù.
¿¹¸¦ µé¸é, ´ç½ÅÀº ParentInterface °¡ ÅÂ±× ÀÎÅÍÆäÀ̽ºÀÎ ´ÙÀ½ÀÇ ÄÚµå(À§ÀÇ ¿¹Á¦¿¡ ±âÃÊÇÏ¿©)¸¦ °¡Áý´Ï´Ù:
public interface BaseInterface {
void myMethod();
}
public interface ParentInterface extends BaseInterface {
//some code here
}
public class ClassChild implements ParentInterface
{
public void myMethod(){
//some code here
}
}
public class UsageClass {
void myMethod(){
ClassChild child = new ClassChild();
child.myMethod();
if (child instanceof ParentInterface) {
//some code here
}
}
}
±×¸®°í ¸®ÆÑÅ丵 ÇÁ·Î¼¼½º°¡ ParentInterface ¿¡ Àû¿ëµÇ°í ³ ÈÄ¿¡ UsageClass ´Â ´ÙÀ½°ú °°ÀÌ º¼ °ÍÀÔ´Ï´Ù:
public class UsageClass {
void myMethod(){
ClassChild child = new ClassChild();
child.myMethod();
if (child instanceof BaseInterface) {
//some code here
}
}
}
|
º¯°æµÈ ¹Ì¸® º¸±â »ç¿ë
|
ÀÌ Ã¼Å© ¹Ú½º¸¦ ¼±ÅÃÇÏ¸é ´ç½Å¿¡°Ô »ç¿ëÀÌ ¹ß°ßµÈ °ÍÀÇ Á¤º¸¸¦ °è¼Ó ¾ò´Â °ÍÀ» Çã¶ôÇϰí, ´ç½Å¿¡°Ô ±×µéÀÇ ±³Ã¼¸¦ ½ÂÀÎÇÏ´Â °ÍÀ» Çã¶ôÇÕ´Ï´Ù.
ÀÌ Ã¼Å© ¹Ú½º°¡ ¼±ÅõÇÁö ¾ÊÀ» ¶§, IDEA´Â ±³Ã¼ ±â´É¸¦ ÀÚµ¿ÀûÀ¸·Î ¼öÇàÇÕ´Ï´Ù.

|
½ÉÁö¾î üũ ¹Ú½º°¡ È®ÀεÇÁö ¾Ê¾ÒÀ» ¶§µµ, ¸¸ÀÏ ¹ß°ßµÈ »ç¿ëÀÌ ¾î¶² Àбâ Àü¿ë ÆÄÀÏ¿¡¼ Á¸ÀçÇÏ¸é ´ç½Å¿¡°Ô »ç¿ë ±³Ã¼¸¦ È®ÀÎÇϱâ À§ÇØ ÇÁ·ÒÇÁÆ® µÉ °ÍÀÔ´Ï´Ù.
|
Refactoring Preview ´ÙÀ̾ó·Î±×(¸¸ÀÏ ±×°ÍÀÌ ³ªÅ¸³ª¸é)¿¡¼, ´ç½ÅÀº ¼öÇàµÈ º¯°æÀ» ºÐ¼®ÇÒ ¼ö ÀÖ½À´Ï´Ù.
¸®ÆÑÅ丵°ú ÇÔ²² ÁøÇàÇϱâ À§Çؼ, Do
Refactor Ŭ¸¯ÇϽʽÿÀ, ±×·¸Áö ¾Ê´Ù¸é Cancel À» Ŭ¸¯ÇϽʽÿÀ. ´õ¿í »ó¼¼ÇÑ °ÍÀº Refactoring
Preview¸¦ º¸½Ê½Ã¿À.
|
|
±×¸®°í ¸¸ÀÏ ¾î¶² Ŭ·¡½º/ÀÎÅÍÆäÀ̽º »ç¿ëµµ ºÎ¸ð Ŭ·¡½º/ÀÎÅÍÆäÀ̽º·Î ±³Ã¼µÉ ¼ö ¾øÀ¸¸é, ´ç½Å¿¡°Ô ´ÙÀ½ÀÇ ¸Þ½ÃÁö°¡ ÇÁ·ÒÇÁÆ® µÉ °ÍÀÔ´Ï´Ù:

|