7. 특성의 중복 - 두 번째
Main 클래스
Main.java
public class Main {
public static void main(String[] args) {
Mouse jerry = new Mouse(5);
System.out.println(jerry);
System.out.println(jerry.toString());
}
}실행 결과
dev.syntax.oop.Mouse@1basc2as
dev.syntax.oop.Mouse@1basc2as하지만 개발자는 jerry를 출력하여 해시값을 확인하는 것은 크게 의미가 없고,
참조 변수 jerry가 가진 정보(ex. age 필드 값)를 조회하는 것이 더 유용할 수 있기 때문에
각각의 필드값을 조회하는 별도의 메서드를 구현해야함
별도로 구현한 메서드 printMouse()
Mouse.java
class Mouse {
int age;
String name;
Mouse(age, name) {
this.age = age;
this.name = name;
}
void printMouse() {
System.out.printf("Mouse - age: %d살, name: %s \n");
}
}Main 클래스에서 printMouse() 호출
Main.java
public class Main {
public static void main(String[] args) {
Mouse jerry = new Mouse(5);
printMouse(); // Mouse - age: 5살, name: 제이미
}
}하지만 이처럼 어떤 클래스(객체)가 가진 정보를 조회하는 일은 개발 과정에서 지속적으로 추가될 2개 이상의 수많은 다른 클래스들(Dog.java, Cat.java 등)에서도 반복적으로 작성이 요구되는 작업이 될 수 있음
Dog 클래스에 구현한 printDog()
Dog.java
class Dog {
int age;
String name;
void printDog() {
System.out.printf("Dog - age: %d살, name: %s \n");
}
}Cat 클래스에 구현한 printCat()
Cat.java
class Cat {
int age;
String name;
void printCat() {
System.out.printf("Cat - age: %d살, name: %s");
}
}…
1. 별도의 메서드들로 직접 구현하였을 때 발생할 수 있는 단점
1. 개발자가 직접 구현해야 하는 번거로움
2. 필드 값이 변경, 추가되었을 경우 출력 포맷 변경 필요
Cat 클래스에 address 필드가 추가되었을 경우 해당 필드에 대한 포맷도 직접 추가 작성해주어야 함
Cat.java
class Cat {
int age;
String name;
String address;
void printCat() {
// System.out.printf("Cat: age: %d, name: %s");
System.out.printf("Cat - age: %d살, name: %s, address: %s");
}
}3. 메서드의 이름을 통해 메서드의 동작에 대한 유추 비용 소요
메서드의 이름을 짓는 과정에서 개발자의 주관이 개입될 수 밖에 없기 때문에 개발자마다 메서드의 이름이 상이할 수 있고, 다른 팀원이 코드를 볼 경우 해당 메서드의 이름만 보고 동작을 바로 유추하지 못할 수 있음
한국인 개발자가 작성한 메서드
Cat.java
class Cat {
int age;
String name;
String address;
void 고양이_조회() {
System.out.printf("Cat- age: %d살, name: %s, address: %s");
}
}영어권 개발자가 작성한 메서드
Cat.java
class Cat {
int age;
String name;
String address;
void showCat() {
System.out.printf("Cat - age: %d살, name: %s, address: %s");
}
}아무리 이름을 권장되는 규칙인 print, show 등을 작성해도 네이밍 규칙은 상당히 주관적이기 때문에 내가 작성하지 않은 다른 사람이 볼 경우 이름에서부터 거부감이 생길 확률이 높음
Last updated on