>  기사  >  Java  >  정적 필드와의 인터페이스: 코드 냄새인가요?

정적 필드와의 인터페이스: 코드 냄새인가요?

Patricia Arquette
Patricia Arquette원래의
2024-10-31 09:17:01607검색

 Interfaces with Static Fields: Are They a Code Smell?

정적 필드와의 인터페이스: 부주의한 자의 함정

Java 개발자는 "상수"로 사용되는 수많은 정적 필드가 있는 인터페이스를 자주 접하게 됩니다. 이 기술은 편리해 보일 수도 있지만 일반적으로 나쁜 습관으로 인해 눈살을 찌푸리게 됩니다.

이 접근 방식의 주요 문제는 코드 전체에 상수가 급증한다는 것입니다. 클래스를 구현하면 내부적으로만 사용되는 경우에도 모든 정적 필드가 공용 인터페이스의 일부가 됩니다. 예를 들어, SwingConstants 인터페이스는 많은 클래스에 의해 구현되어 광범위한 상수 목록을 모든 클래스에 무차별적으로 노출합니다.

소프트웨어 설계자 Josh Bloch는 또한 이 패턴에 대해 주의합니다.

"상수 인터페이스를 구현하면 [구현 세부 정보] 클래스에서 내보낸 API로 누출되는 경우가 있습니다."라고 그는 말합니다. "이는 약속을 나타냅니다. 향후 릴리스에서 더 이상 상수를 사용할 필요가 없도록 클래스가 수정되는 경우에도 바이너리 호환성을 보장하기 위해 인터페이스를 구현해야 합니다."

이 패턴에 대한 대안에는 다음이 포함됩니다. 인스턴스화할 수 없는 클래스의 공개 정적 필드로 상수를 열거하거나 정의합니다. 이러한 메서드를 사용하면 다른 클래스가 자체 API를 복잡하게 만들거나 캡슐화 원칙을 위반하지 않고 상수에 액세스할 수 있습니다.

결론적으로 정적 필드가 있는 인터페이스는 어느 정도 유용성을 제공하는 것처럼 보일 수 있지만 불필요한 복잡성과 잠재적인 유지 관리 문제를 야기합니다. 상수로 작업할 때 더 적절하고 유지 관리가 가능한 옵션으로 열거형이나 인스턴스화할 수 없는 클래스를 사용하는 것을 고려해 보세요.

위 내용은 정적 필드와의 인터페이스: 코드 냄새인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.