자바 SE 8 날짜, 도입을위한 새로운 메커니즘을 제공 LocalDate
, LocalTime
그리고 LocalDateTime
시간의 순간을 표현하는 클래스. : 이러한 순간을 조작하기 위해 메소드 세트가 주어 LocalDate.plusDays(...)
, LocalDate.minusDays(...)
등등과.
나는 항상 좋은 실천은 메소드가 실제로 실행될 동작, 동작을 수행 하는 것이므로 목적을 설명하는 동사 뒤에 메소드 이름을 짓는 것이라고 생각했습니다 . 당신이 좋아하는 클래스를 고려한다면 그냥 언급 StringBuilder
예를 들어, 메소드의 이름이 append
, insert
, delete
...
이것은 나에게이 방법을 명명 바로 소리를하지 않는 이유는 plusDays
대신 sumDays
, minusDays
대신 subtractDays
. 그것은 매우 성가신 것을 찾는 것입니까? 어떻게 생각해?
내가 생각할 수있는 유일한 이유는 날짜가 변경 불가능한 객체이기 때문에 호출 plusDays
하면 원래 객체에 요일을 추가하지 않고 새로운 속성을 가진 새 객체를 생성하지만 매우 미묘합니다.
sqrt
프로그래머가 인식하고 알아야 할 단어입니다. 그건 그렇고 영어 단어는 "제곱근"입니다. 그러나 영어의 자연스러운 것에 따라 이름을 짓는 것은 좋지 않습니다. 예를 들어 완벽하게 훌륭한 영어 단어 인 "불법"이라는 단어를 사용하십시오. 그러나 누군가 메서드 이름을 지정했다면 isIllicit
이 메서드 호출을 볼 때마다 눈알을 찢어 내고 싶다고 생각합니다. 그것은 끔찍해 보이고 아이디어를 표현하는 더 좋은 방법이 있어야합니다.
sum
이 상황에서 잘못 들립니다. .net을 선호합니다 AddDays
.
Math.addExact(1, 2)
"add 1 and 2"라고 말했기 때문입니다. tomorrow.plusDays(2)
"내일 더하기 2 일"이라고 말했기 때문입니다. 경우 addExact
의 일원이었다 Integer
어떻게 든했을 것이다 1.plusExact(2)
.
plusDays
새로운 날짜를 x 일 동안 미래로 되돌릴 것으로 예상 되는 반면, addDays
나는 원래의 객체를 변형시킬 것으로 기대할 수 있습니다. 그래도 나는 단지 자바에 익숙하지 않다.
sqrt
제곱근을 취하는 메소드를 고려하십시오 . 이 메소드의 이름을 지정takeSqrt
하는 것은 규칙에 따라 의미가있는 것처럼 보이지만 이름을 지정하면 메소드를 더 읽기 쉽게 만들거나 명확하게 만들 수 없습니다.