[Java] 필드 주입시 생성자에 this 꼭 써야할까?

2023. 6. 5. 01:14·개발/JAVA
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
'개발/JAVA' 카테고리의 다른 글
  • [Java] @Override 꼭 적어야 하나?
  • [Java] 인터페이스가 가진 객체지향의 특징
  • [Java] List<T> list = new ArrayList<>();
  • [JAVA] 입력 받은 숫자가 소수인지 판단하는 문제 뜯어보기
TeTedo.
TeTedo.
  • TeTedo.
    TeTedo 개발 일기
    TeTedo.
  • 전체
    오늘
    어제
    • 분류 전체보기 (319)
      • 개발 (274)
        • Article (4)
        • 정리 (21)
        • Spring Boot (17)
        • JPA (2)
        • JAVA (6)
        • Database (4)
        • 자료구조 (11)
        • 알고리즘 (32)
        • React (20)
        • Docker (10)
        • node.js (18)
        • Devops (11)
        • Linux (4)
        • TypeScript (3)
        • Go (10)
        • HyperLedger (4)
        • BlockChain (43)
        • html, css, js (48)
        • CS (3)
        • AWS (3)
      • 모아두고 나중에 쓰기 (3)
      • 팀프로젝트 (18)
        • SNS(키보드워리어) (9)
        • close_sea (9)
      • 개인프로젝트 (1)
        • Around Flavor (1)
        • CHAM (13)
        • ethFruitShop (5)
      • 독서 (0)
        • 스프링부트와 AWS로 혼자 구현하는 웹 서비스 (0)
  • 블로그 메뉴

    • 홈
    • 개발일기
    • CS
    • 실습
    • 코딩테스트
    • 웹
    • Go
    • node.js
    • 팀플
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    명령어
    CSS
    프로그래머스
    React
    html
    node.js
    erc20
    go언어
    컨테이너
    go
    하이퍼레저
    nodejs
    node
    js
    mysql
    도커
    30일챌린지
    ERC721
    블록체인
    30일 챌린지
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
TeTedo.
[Java] 필드 주입시 생성자에 this 꼭 써야할까?
상단으로

티스토리툴바