Skip to Content
Suffering builds character
아카이브10.Java특징상속7. 특성의 중복 - 두 번째

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