developer tip

Java에서 명명 규칙 'of'는 무엇을 의미합니까?

copycodes 2020. 11. 10. 08:19
반응형

Java에서 명명 규칙 'of'는 무엇을 의미합니까?


우리가 자바 8에서 볼 수 있듯이, 같은 '의'라는 이름의 많은 방법이있다 Stream.of(), Optional.of()와 같은 많은 라이브러리 actorOfAkka에가.

이 "의"는 무엇을 의미합니까? 영어 단어 "of"또는 "Object Factory"와 같은 약어입니까?


네, 영어 단어입니다. 일반적으로 표현이 영어 구문처럼 읽히도록 선택됩니다. 예를 들어, Stream.of(3, 4)는 "3과 4의 흐름"처럼 보여야합니다. 이것은 "숫자 3과 4로 구성된 흐름"의 축약 버전과 비슷합니다.


전통적으로 래퍼 클래스를 살펴보면 모두 주어진 값 유형의 래퍼 클래스 인스턴스를 빌드하는valueOf(XXX) 메서드 포함 합니다 .

Integer.valueOf(int)
Double.valueOf(double)
Float.valueOf(float)

Java는 1 일차부터이 명명 규칙을 따르고 있습니다. 마찬가지로 Java-8에 도입 된 대부분의 클래스에는이 of(...)메서드가 많이 포함되어 있습니다 .

Stream.of(...)
LocalDate.of(year, month, dayOfMonth)
Instant.ofEpochSecond(epochSecond)
and many more.

valueOf또는 of메서드를 사용할 수 있을뿐만 아니라 다른 클래스 내에서 특정 목적이나 작업 유형을 제공하는 메서드가 거의 없으며 해당 작업을 나타내는 가장 적합한 이름을 할당했습니다.

  • parseXXX () : 주어진 문자열 입력을 구문 분석합니다. 예 : Integer.parseInt(str), Double.parseDouble(), Date.parse(datestr)etc
  • get (field) : 객체에서 필드 정보를 검색합니다. 예 : Calendar.get(field), LocalDate.get(TemporalField)etc.
  • format () : 다른 표현으로 변환. 예 : String.format(), SimpleDateFormat.format(), DateTimeFormatter.format()etc

이러한 명명 규칙은 Java8 DateTime API에서 많이 사용됩니다. 메서드 명명 규칙을 확인하십시오.


정적 팩토리 메서드에 사용되는 일반적인 명명 규칙 입니다.

Joshua Bloch는 Effective Java (2nd Edition) , 항목 1 : 생성자 대신 정적 팩토리 메소드 고려 (강조 추가됨) 의 패턴 및 연관된 이름 지정 규칙에 대해 다음을 언급합니다 .

... (a) 정적 팩토리 메소드의 단점은 다른 정적 메소드와 쉽게 구별 할 수 없다는 것입니다. 생성자가하는 방식으로 API 문서에서 눈에 띄지 않으므로 생성자 대신 정적 팩토리 메서드를 제공하는 클래스를 인스턴스화하는 방법을 파악하기 어려울 수 있습니다. Javadoc 도구는 언젠가 정적 팩토리 메소드에주의를 끌 수 있습니다. 그 동안 클래스 또는 인터페이스 주석의 정적 팩토리에주의를 기울이고 일반적인 명명 규칙을 준수하여 이러한 단점을 줄일 수 있습니다 . 다음은 정적 팩토리 메소드의 일반적인 이름입니다.

  • valueOf-대략적으로 말해 매개 변수와 동일한 값을 가진 인스턴스를 반환합니다. 이러한 정적 팩토리는 효과적인 형식 변환 방법입니다.

  • of-EnumSet (항목 32)에 의해 대중화 된 valueOf의 간결한 대안입니다.

...

따라서 다른 사람들이 지적했듯이 "of"는 영어 단어 "of"를 의미하며 약어가 아닙니다. 그러나이 규칙을 사용하는 이유 중 하나는 정적 팩토리가 생성자와 비교하여 JavaDocs의 별도 섹션에 표시되지 않기 때문에 클래스가 팩토리 메소드를 제공하는지 쉽게 알 수 있도록하기 위함입니다.

제 생각에 간결하고 설명 적으로 이름이 지정된 정적 팩토리를 사용하는 추가 이점은 코드 생성자 호출로 흩어져있는 경우에는 해당되지 않는 prose처럼 읽는다new 는 것입니다.

참고 URL : https://stackoverflow.com/questions/48256270/what-does-the-naming-convention-of-mean-in-java

반응형