자바 추상 ​​클래스 명명


9

예:

Ajax 조치에 대한 추상 클래스를 작성합니다. 다른 Ajax 액션은 모두이 클래스를 확장합니다.

문제:

  1. 클래스 이름을 AjaxAction 또는 AbstractAjaxAction입니까?
  2. 서브 클래스를 작성할 때 다음과 같이 이름을 지정하십시오.
    • 동작
    • 아약스 액션
    • 그냥 이름을 지어주세요

나는 "공식적인"협약이 무엇인지 찾을 수 없었다. 서브 클래스에서 "Abstract"접두사 나 필요한 명명 규칙이 필요 하지 않습니다 . (어쨌든 적합 할 수 있습니다.)

공식 컨벤션이 있습니까? 저를 연결시켜 주시겠습니까? 이 주제에 대한 당신의 의견은 무엇입니까?

답변:


16

가능한 경우 추상 클래스 또는 인터페이스의 접두사 / 접미사를 포함하여 구현 세부 정보를 이름에서 제외하려고합니다.

이름 지정에 대한 지침 / 영감을 찾을 수있는 곳은 Java API입니다. 접두사를 사용하는 부분은 생각할 수 없습니다 (Abstract 접두사를 많이 사용하는 Collections API는 예외입니다). 다음 검색은 꽤 좋은 예입니다.

download.oracle.com/javase/6의 "public abstract class"

추상 클래스의 이름은 추상이며 구체적인 서브 클래스의 이름은 좀 더 구체적입니다. 예를 들어, 추상 클래스는 Reader구상 서브 클래스를 가지고 BufferedReader, StringReader, InputStreamReader, 등

구체적인 서브 클래스는 추상 클래스의보다 구체적인 버전이므로 동일한 방식으로 이름을 선택하려고합니다. 귀하의 예에서 추상 클래스 AjaxAction의 이름을 지정하고 구체적인 하위 클래스 이름 ( SpecificAjaxAction)에 사용합니다.


12

무언가를 선택 하고 일관성을 유지하십시오. 접미사 Base를 사용하여 의도 한 기본 클래스 또는 접두사를 나타내는 지 여부 는 Abstract일관성이 있습니다.

프로그래머와 마찬가지로 이런 종류의 것에 대한 의견이 많이 있습니다. 프로젝트 (또는 개발 그룹 또는 기타) 내에서 명명의 일관성으로 가치가있는 것에 대한 내 의견은 특정 명명 체계보다 중요합니다.


4

필자는 추상 클래스 AjaxActionBase와 접미사 자식 클래스의 이름을 'Action'또는 'AjaxAction'으로 지정합니다.이 클래스는 내가 작성해야하는 조치에 대해보다 자연스럽게 읽을 수있게되었습니다.


0

나는 단순하지만 매우 중요한 이유 때문에 클래스가 추상이라는 힌트를 선호합니다 .

  • 추상 클래스가 아닌 인터페이스를 중심으로 API를 작성하는 것이 좋습니다.
  • "Action"과 같은 간단한 이름을 사용하여 인터페이스 이름을 지정하려고합니다. 예를 들어 Java Collections API의 List 또는 Map을 참조하십시오. 모두 인터페이스입니다.

따라서 일반적으로 최상위 추상 클래스 인 AbstractAction 또는 BaseAction을 호출합니다. 매우 구체적인 요구가 없다면, 일반적으로 공개 하지 않기 때문에 코드 사용자가 인터페이스를 사용하도록 안내합니다. 사람들이 클래스 를 확장하는 방법에 대해 매우주의 하지 않는 한 추상 기본 클래스는 일반적으로 API의 기능이 아니라 구현 세부 사항이어야 합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.