728x90
나는 아래와 같이 class 에서 생성자 코드를 작성시 항상 생각없이 this를 썼다.
class Board {
String name;
String content;
public Board(String name, String content) {
this.name = name;
this.content = content;
}
}
한번도 this를 꼭 써야하나라는 고민은 하지 않았기 때문이다.
대부분 클래스의 생성자로 필드 주입시 위와 같이 this를 사용한다.
왜냐하면 필드의 변수명과 생성자로 주입받는 파라미터의 변수명이 같기 때문이다.
class Board {
String name;
String content;
public Board(String name, String content) {
name = name;
content = content;
}
}
위와 같이 this를 써주지 않는다면 name이 어떤 name을 가리키는지 알지 못해 필드로 주입하지 못한다.
하지만 TDD방식으로 Test 코드를 작성하던 중 필드 주입은 약간 달랐다.
public class FoodServiceTest {
private FoodService foodService;
private Long foodId;
private FoodMapper foodMapper;
private FoodRepositoryImpl foodRepositoryImpl;
@BeforeEach
void setUp(){
this.foodService= new FoodService();
this.foodId = 0L;
this.foodMapper = new FoodMapper();
this.foodRepositoryImpl = new FoodRepositoryImpl();
}
}
위와 같이 나는 아무 생각없이 필드 주입시 this를 통해 주입하였다.
하지만 여기서는 변수명이 같지 않기 때문에 this를 사용하지 않아도 된다.
public class FoodServiceTest {
private FoodService foodService;
private Long foodId;
private FoodMapper foodMapper;
private FoodRepositoryImpl foodRepositoryImpl;
@BeforeEach
void setUp(){
foodService= new FoodService();
foodId = 0L;
foodMapper = new FoodMapper();
foodRepositoryImpl = new FoodRepositoryImpl();
}
}
실제로 this를 쓰든 안쓰든 성능면에서는 차이가 없다.
글쓰다 생각난건데 getter도 위와 같은 방식으로 this를 쓰지 않는다.
나는 this를 쓰건 안쓰건 개발자들의 취향 차이일 뿐이라고 생각한다.
this를 사용하면 매개변수로 주입, this가 없다면 직접 생성하여 주입으로 코딩컨벤션을 정해도 된다.
하지만 굳이 필요하지 않은 this를 쓰는것은 클린하지 않다고 생각하여 나는 this가 필요하지 않은 경우에는 쓰지 않을 것이다.
728x90
'개발 > JAVA' 카테고리의 다른 글
[Java] @Override 꼭 적어야 하나? (0) | 2023.05.04 |
---|---|
[Java] 인터페이스가 가진 객체지향의 특징 (0) | 2023.05.03 |
[Java] List<T> list = new ArrayList<>(); (0) | 2023.04.25 |
[JAVA] 입력 받은 숫자가 소수인지 판단하는 문제 뜯어보기 (0) | 2023.04.06 |
[JAVA] java 기본개념 (+ jshell) (0) | 2023.04.04 |