반응형
@Getter
@Setter
public class Message {
private Long receiverSno;
private String receiverHid;
private String receiverNickname;
private Long senderSno;
private String senderNickname;
public Message (User sender, User receiver) {
this.setSenderSno(sender.getMemberNo());
this.setSenderNickname(sender.getNickname());
this.setReceiverSno(receiver.getMemberNo());
this.setReceiverNickname(receiver.getNickname());
}
}
위와 같이 한 클래스 내의 변수에 접근하기 위해 위처럼 getter/setter를 써야 할지 아니면 직접 접근해야 할지 고민되었다.
기능상 하는 일이 같으니 상관없지 않을까 싶은 생각이 들었고, 혹시 다른 의견이 있나 싶었다.
대부분 private 변수인 경우 같은 클래스 내에서는 직접 접근을 선호하였다.
그 이유로는
- 인스턴스가 내부 상태를 자체적으로 숨길 필요 없음. getter/setter는 내부 상세 구현을 가리는 외부 노출용(캡슐화)
- getter/setter가 순수하게 그 일만 하는게 아니라 다른 일(validation 등)을 할 수도 있기에(override 할 경우) 예상과는 다르게 작동할 수 있음
- 함수가 서로 의존하게되고 그 양이 많아지면 나중에 코드 수정이 복잡해짐
- 가독성
혹시 성능상 차이가 있을까 싶어 더 찾아보았는데, 성능은 거의 똑같은 것으로 확인되었다.
참고
https://stackoverflow.com/questions/23931546/java-getter-and-setter-faster-than-direct-access
728x90
반응형
'개발 > java' 카테고리의 다른 글
[java] stream.concat, stream.generate (0) | 2024.02.06 |
---|---|
[JsonProperty] boolean with is (0) | 2024.01.25 |
[map] getOrDefault vs computeIfAbsent (0) | 2023.12.20 |
[pom] http로 repository 연결 (0) | 2023.10.23 |
[pom] element annotationprocessorpaths is not allowed here (0) | 2023.10.23 |