728x90
개인프로젝트때도 파라미터라든지 수정이 되면 안되는 객체??들한테 final을 붙였는데 협업프로젝트 때에도 나의 추천..???으로 final을 붙이기로 하였다.
근데 나도 사실 다른 분들 깃 보다가 참고한거라 왜 final을 붙이는지에 대해 정확하게 알지 못한다. 이기회에 알아보자구나..
일단 첫번째로 변수의 재할당을 막기위해 final을 붙였다.
예를들어
public Hello(String hello){
hello="바꾸기"
}
이렇게 되면 어떻게 될까?? 의도하지 못한 갑이 할당될 것이다. 물론 그렇지 않기 위해 노력하겠지만 사람인지라..실수가 있을 수 있다.
그래서 만약 파라미터에 final을 붙이면 컴파일 에러가 발생하여 예상치 못한 동작을 사전에 방지할 수 있다.
두번째 수정할 수 없다라는 의미??
뭐 위의 근거와 비슷한 맥락이지만 변수에 final을 붙임으로서 수정불가능한 변수임을 알릴 수 있다.
물론 객체의 경우 객체 내부의 필드값은 변경가능하지만(객체내부필드에 final을 붙인게 아님으로) 객체 자체를 변경 못한다.
final Member member=new Member("안녕");
member.setName("안녕하슈");
//member=new Member("안되지롱");
위의 코드처럼 set으로 내부 변수 값은 변경가능하지만 객체의 재할당은 안된다.
즉 예방차원에서 좋은것같다. 다만 파라미터에 final을 붙이는거는 좋은거 같은데
final Member member=new Member();
은 할 필요가 있을까?? 물론 재할당을 막을 수 있지만 이미 할당된 객체를 재할당하는경우는 적었다(개인프로젝트때)
또한 내부 필드에 대해서 내부필드를 바꾸는 set 메서드가 있다면 이부분을 막을 수 없으니...
'프로젝트 > 협업 프로젝트(2023.12.18-2024.01.25)' 카테고리의 다른 글
[Key Word 개발기] @WebMvcTest 없이 테스트?? (1) | 2024.01.06 |
---|---|
[Key Word 개발기] Flyway 적용기 (0) | 2024.01.05 |
[Key Word 개발기] CI/CD 어떻게 할것인가... (0) | 2024.01.02 |
[Key Word 개발기] Spring RestDocs 와 Swagger 같이 사용하기 (1) | 2023.12.30 |
[Key Word 개발기] Swagger ?? Spring Rest Docs?? (0) | 2023.12.29 |