layout | title | subtitle | catalog | header-img | tags | date | ||
---|---|---|---|---|---|---|---|---|
post |
μΈν
리μ μ΄ λ¦¬ν©ν λ§ |
Intellij Refactoring |
true |
|
2018-03-11 |
μΈν 리μ μ΄μ 리ν©ν λ§ κΈ°λ₯μ μ΄μ©ν΄μ λΉκ΅μ μ½κ² 리ν©ν λ§μ ν μ μμ΅λλ€. λνμ μΈ λ¦¬ν©ν λ§ κΈ°λ₯λ€μ νλ νλ μ²μ²ν μ΄ν΄ 보λλ‘ νκ² μ΅λλ€.
ν΄λΉ κΈ°λ₯μ λ¨μΆν€λ μ€ν¬λ¦°μ· νλ¨ λ
ΉμμΌλ‘ νμλμ΄μμ΅λλ€. λ¨μΆν€ νκ²½μ΄ λ€λ₯Έ μ¬μ©μλ€μ ν΄λΉ κ·Έλ¦Ό μ²λΌ Find Action μ°½μμ 리ν©ν λ§ ν€μλλ₯Ό κ²μνλ©΄ μνλ κΈ°λ₯μ μ½κ² μ°Ύμ μ μμ΅λλ€. μ μμ λ Extract Method
κ²μν μ΄λ―Έμ§ μ
λλ€.
if(age > 19){
//λ©μλ μμΆμ
System.out.println("μ±μΈ μ
λλ€.");
}
if(isSenior(age)){
//λ©μλ μμΆν
System.out.println("μ±μΈ μ
λλ€.");
}
private boolean isSenior(int age) {
return age > 19;
}
λ©μλλ‘ μμΆνλ κΈ°λ₯μΌλ‘ κ°μ₯ λ§μ΄ μ¬μ©νλ 리ν©ν λ§ κΈ°λ₯μ
λλ€. λ¨μν age > 19
μΌλ‘ ꡬλΆνλ κ²λ³΄λ€ isSenior
λ©μλλ₯Ό μ΄μ©ν΄μ 묻λ κ²μ΄ κ°λ
μ± λ° μ μ§λ³΄μμμλ μ’λ€κ³ μκ°ν©λλ€.
μ λ ν
μ€νΈ μ½λλ₯Ό ν΅κ³Όνλ μ½λλ₯Ό μ΅λν λΉ λ₯΄κ² λ§λ€κ³ μΈν
리μ μ΄μ 리ν©ν λ§ κΈ°λ₯μ ν΅ν΄μ ν΄λ¦°μ½λ μμ
μ μ§νν©λλ€.
//리ν©ν λ§ μ
public void printName() {
printName("Yun");
}
private String printName(String firstName) {
return firstName;
}
//리ν©ν λ§ ν
public void printName() {
printName("Yun", "kim");
}
private String printName(String firstName, String lastName) {
return firstName + lastName;
}
λ©μλμ νλΌλ―Έν°κ° μΆκ°λλ μΌμ λΉλ²νκ² λ§λκ² λ©λλ€. μ΄ λ μ μ©νκ² μ¬μ©ν μ μλ κΈ°λ₯μ΄ Change Signature
κΈ°λ₯μ
λλ€. λν λ©μλμ μΆκ°λ νλΌλ©ν°λ ν΄λΉ λ©μλλ₯Ό νΈμΆνλ κ³³μ μΌκ΄μ μ© λ©λλ€.
public void test() {
printName("Yun", "kim");
}
//리ν©ν λ§μ
private String printName(String firstName, String lastName) {
return firstName + lastName;
}
//리ν©ν λ§ν
private String printFullName(String firstName, String lastName) {
return firstName + lastName;
}
ν΄λμ€, λ©μλ, λ³μ λ±λ± μ΄λ¦μ λ³κ²½νλ κΈ°λ₯μ λλ€. μ λ§ λ§μ΄ μ¬μ© νλ κΈ°λ₯μ€μ νλμ λλ€. μ΄λ¦μ΄ λ³κ²½λλ©΄ μ°Έμ‘°λλ λͺ¨λ κ³³μμ μΌκ΄ λ³κ²½ λ©λλ€.
// 리ν©ν λ§ μ
public void printFullName() {
printFullName("Yun", "kim");
}
//리ν©ν λ§ ν
public void printFullName() {
final String yun = "Yun";
printFullName(yun, "kim");
}
νΉμ κ°μ λ³μλ‘ μμΆνλ κΈ°λ₯μ
λλ€. κΈ°λ³Έμ μΌλ‘ final
ν€μλλ‘ λ³μκ° ν λΉλ©λλ€.λ³μλ μκ°λ³΄λ€ λ³μλ³΄λ€ μμλ‘ μ¬μ©μ λ§μ΄ λ©λλ€. μ¦ νλ² ν λΉλ κ°μ λ³κ²½νλ μκ°λ³΄λ€ ννμ§λ μμ΅λλ€. κ·Έλ κΈ° λλ¬Έμ μ λ μΌλ¨ μμλ‘ μ μΈνκ³ λμ€μ κ°μ λ³κ²½ν μ΄μ κ° μκΈ°λ©΄ κ·Έλ final
ν€μλλ₯Ό μ κ±°νλ λ°©ν₯μΌλ‘ μ¬μ©νκ³ μμ΅λλ€. final
ν€μλλ μμλ‘ ν λΉλ κ°μ΄ λ³κ²½λμ§ μλλ€κ³ λͺ
μμ μΌλ‘ μ μΈν¨μΌλ‘μ¨ μ½λλ₯Ό μ΄ν΄νλλ° μ’μ μνμ νλ€κ³ μκ°ν©λλ€.
λ³μ μμΆ κΈ°λ₯κ³Ό κ±°μ λμΌ ν©λλ€. νΉμ κ°μ λ©€λ² νλλ‘ ν λΉλ©λλ€.
λ³μ μμΆ κΈ°λ₯κ³Ό κ±°μ λμΌ ν©λλ€. νΉμ κ°μ static μμμ ν λΉν©λλ€.
public interface AttackStrategy {
}
public class MissileStrategy implements AttackStrategy{
public void attack() {
System.out.println("λ―Έμ¬μΌ 곡격");
}
}
μμ κ°μ μ½λμΌ κ²½μ° attack()
λ©μλλ₯Ό μμ μΈν°νμ΄μ μΆμ λ©μλλ‘ μ¬λ¦¬λ κΈ°λ₯ μ
λλ€. νμ ν΄λμ€μμλ @Override
μ΄λ
Έν
μ΄μ
μ΄ μλμΌλ‘ μΆκ°λ©λλ€.
Pull Members up κΈ°λ₯μ λ°λ κΈ°λ₯μ λλ€. μμ ν΄λμ€μ μλ λ©μλλ₯Ό νμ ν΄λμ€μ λ©μλλ‘ λ΄λ €μ€λλ€.
μμμ μκ°ν κΈ°λ₯μΌλ‘ λ κ±°μν μ½λλ€μ 리ν©ν λ§νλ κ²μ νμ€μ μΌλ‘ μ΄λ ΅μ΅λλ€. νμ§λ§ 리ν©ν λ§μ λ무 κ±°μ°½νκ³ μ΄λ ΅κ² μμνλ κ²λ³΄λ€ λ°λ³΅ μ μΈ μ½λλ₯Ό ν¨κ³Όμ μΌλ‘ μ€μ΄κ³ μ½λλ₯Ό μ μ§λ³΄μ λ° κ°λ μ± μ’μ μ½λλ₯Ό μμ±νλ κ²λ μ’μ 리ν©ν λ§ μ΄λΌκ³ μκ°ν©λλ€.