프로젝트/협업 프로젝트(2023.12.18-2024.01.25)

[Key Word 개발기] final 컨벤션

dal_been 2023. 12. 29. 11:56
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 메서드가 있다면 이부분을 막을 수 없으니...