인프런 커뮤니티 질문&답변

code-tree님의 프로필 이미지

작성한 질문수

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

FieldError, ObjectError

getter 질문 드립니다!

작성

·

164

0

코드에서 item.getxxx 를 계속 사용하는 대신

지역 변수를 선언해서 item.getxxx 값을 저장해놓고 사용하면 속도면이나 다른 이점 또는 단점이 있는지 궁금합니다!

답변 2

1

code-tree님의 프로필 이미지
code-tree
질문자

값이 바뀌게 되는 경우에 대한 고려를 하지 못 했네요. 좋은 답변 감사합니다!!

1

안녕하세요, code-tree 님. 공식 서포터즈 codesweaver 입니다.
.
getter내에서 복잡한 계산과정이 발생하는 것이 아니면 큰 차이는 없을것으로 보이지만 장단점을 생각해보면..

 

만약 매번 item.getName();으로 매번 item.getXxx로 받아와 사용한다고 하면, 현재 프로세스 흐름이 현재의 스택에서 item의 주소로 한번 점프(1)가 발생하고, getter 메서드에서 값을 return(2) 하고 다시 원래 스택으로 돌아와(3) 리턴 값을 사용(4)하게 됩니다.

이를 미리 받아와 사용하면 현재 스택에서 name 의 값을 찾아서(1) 사용(2)하면 되기에 몇가지 단계를 단축합니다.

.

또 한편 String name = item.getName(); 처럼 값을 로컬에 저장하고 사용하면 이런 위험이 있을수도 있겠습니다. String name = item.getName(); 코드 이후에 item.setName("dddd"); 같은 코드가 중간에 있어서 item의 데이터가 달라진 경우 입니다. 이렇게 되면 미리 받아서 저장한 값은 의미가 없어지니까 다시 getter로 받아와야 합니다. 

.

getter()내에서 복잡한 연산이 있는 경우가 아니라면 getter()를 호출하는것이 안전하지 않나 생각합니다.
.
감사합니다.