[JAVA] 매개변수 내부의 final키워드 활용방법

조시현·2023년 11월 3일
0

클린코드

목록 보기
1/4
post-thumbnail

서론

Java에서 final 키워드는 변수의 값을 영구히 변경할 수 없도록 제한하는 데 사용된 다는 정보만 알고 있습니다. 이를 바탕으로 활용 방안에 대해서 연구해보았습니다.

final 매개변수의 장점

  • 코드 가독성 향상
    final 매개변수는 메서드가 해당 값을 변경하지 않고 해당 값을 사용한다는 것을 명확하게 나타냅니다. 이는 코드를 읽는 다른 개발자가 메서드의 의도를 더 쉽게 이해하도록 돕습니다.

  • 의도하지 않은 변경 방지
    final 매개변수는 실수로 값을 변경하는 것을 방지하여 버그를 줄이는 데 도움이 됩니다. 특히, 여러 스레드에서 동시에 메서드를 호출하는 경우 final 매개변수는 데이터 경쟁을 방지하는 데 도움이 될 수 있습니다.

  • 불변 객체 보호
    불변 객체(객체의 상태가 변경될 수 없는 객체)를 메서드에 전달할 때 final 매개변수를 사용하면 객체의 무결성을 보호하는 데 도움이 됩니다.

  • 코드 문서화 향상
    final 매개변수는 메서드의 입력에 대한 명시적인 문서화를 제공합니다. 이는 코드를 더욱 자기 설명적이고 이해하기 쉽게 만듭니다.

final 매개변수 사용 방법

final 매개변수는 메서드 선언 시 매개변수 목록에 final 키워드를 추가하여 선언합니다.

public void updateProduct(final Product product) {
  // ...
}

위 코드에서 product 매개변수는 final로 선언되어 메서드 내에서 변경될 수 없습니다.

final 매개변수와 객체 참조

final 매개변수는 객체 참조를 가리키지만, 객체 자체를 의미하지는 않습니다.
즉, final 매개변수를 통해 전달된 객체의 참조를 변경할 수는 없지만, 객체의 속성은 여전히 변경할 수 있습니다.

public void updateProduct(final Product product) {
  product.setPrice(1000); // 객체 속성 변경 가능
  // product = new Product(); // 컴파일 오류 (참조 변경 불가능)
}

final 매개변수 사용 사례

  • 데이터 유효성 검사
    메서드에 입력으로 데이터를 전달하고 해당 데이터의 유효성을 검사하는 경우 final 매개변수를 사용하여 데이터가 변경되지 않도록 보호할 수 있습니다.

  • 수치 계산
    메서드에 수치 값을 전달하고 해당 값을 기반으로 계산을 수행하는 경우 final 매개변수를 사용하여 계산 중에 값이 변경되지 않도록 보호할 수 있습니다.

  • 객체 복사
    메서드에 객체를 전달하고 해당 객체의 복사본을 만들어 작업하는 경우 final 매개변수를 사용하여 원본 객체가 변경되지 않도록 보호할 수 있습니다.

final 매개변수 사용 제한 사항

final 매개변수는 기본 데이터 유형(int, double, boolean 등)에는 사용할 수 없습니다.
로컬 변수를 final로 선언할 수도 있지만, 일반적으로 매개변수에 사용하는 것이 더 일반적입니다.

결론

메소드 매개변수에 'final'을 사용하는 것이 필수는 아니지만 데이터 흐름을 더 예측 가능하게 만들고 코드를 더 쉽게 이해할 수 있도록 하여 프로그래밍의 기능적인 스타일을 촉진합니다.
이는 코드를 이해하는 데 드는 비용이 높은 더 크고 복잡한 프로젝트에 특히 유용합니다. final을 효과적으로 사용하면 의도하지 않은 부작용으로부터 방법을 보호하여 소프트웨어의 신뢰성을 높일 수 있습니다.

profile
소프트웨어 관련 고민을 좋아하고 상황에 맞는 답을 함께 찾아가는 과정을 좋아합니다. 😀

0개의 댓글