2021 03 08
2021-03-08¶
블랙잭 1차 미션 피드백¶
- controller와 domain에는 view 로직을 추가하지 말자! - domain 객체가 불변이 보장이 안되더라도, view에 대한 로직은 해당 객체를 view layer에 넘겨준 후, getter를 통해 구현하는게 맞다.
- 메서드 명에 맞는 return 타입, return 타입에 맞는 메서드명을 갖자! - ex) calculateAceSum... int를 반환하는 것을 기대
- Controller에서 로직이 많다면... - 혹시나 Domain에서 해줘야 할 일을 Controller에서 해주고 있지 않나 고민해보자!
- boolean 타입의 함수 리턴할 때 ()는 굳이 쓰지 말자
- getter라면, 인스턴스 필드를 반환하는게 맞다! - 한 단계 더 포장된 필드를 가져오고 싶다면, getter가 아닌 다른 메서드 명을 고민해보자! - 어떤게 있을고...
- 인스턴스화가 되면 안되는 클래스는 abstract로 설정해 방어하자!
- 주석을 쓰지말고, 메서드명/변수명으로 충분히 의도를 나타내는 연습을 하자!
자바 메서드 네이밍¶
- 네이밍 시 중요한 고려사항 - 왜 존재해야 하는가 - 무슨 작업을 하는가 - 어떻게 사용하는가
- 메서드 명명 규칙 - lowerCamelCase로 쓸 것 - 동차/전치사로 시작 할 것 - 기본적으로 메서드 명은 동사로 시작할 것 - ex) getUserByName(), inputData() - 다른 타입으로 전환하거나, 빌더 패턴을 구현한 클래스의 메서드는 전치사도 가능 - ex) toString(), of() - JUnit 테스트 메소드 이름에는 언더스코어(_)로 이름의 논리 컴포넌트를 구분한다 - ex) isAdult_AgeLessThan18_False()
- 메서드 명으로 자주 쓰이는 동사
- get/set: getter/setter 구현
- 객체지향에 어긋나기 좋다... "객체에 메세지를 보낸다"를 명심할 것
- init: 데이터를 초기화하는 메서드명에 쓰인다
- is/has/can: boolean 값을 리턴함 - is: 참/거짓 검증 - has: 데이터 가지고 있는지 검증 - can: 할 수 있는지 없는지 확인
- create: 새로운 객체를 만든 후 리턴해주는 메서드 명에서 쓰임
- find: 데이터를 찾는 메서드 명에 쓰임
- to: 해당 객체를 다른 형태의 객체로 변환해줄때 쓰임
- A-By-B: B를 기준으로 A를 할때 쓰임 - ex) getUserByName()
자바 변수명 네이밍¶
- 의도를 분명히 밝혀 이름을 지을 것 - 가능한 구체적으로 이름을 지을 것 - 변수가 표현하고 있는 것을 완벽하고 정확하게 설명해야 함
- 맥락을 고려해서 짓기 - 굳이 구구절절하게 짓지 않기 - ex) User 클래스에서 굳이 userName, userAge (X)
- Boolean 변수의 네이밍 - 성공했다는 것을 정확히 설명하는 이름을 쓰자 - ex) done, error, found, success, ok - 긍정을 나타내는 변수명을 쓰자 - ex) if(found) (O) / if(!notFound) (X) - 필요할 땐 is를 써주자 - ex) if(isValid) (O)
- 변수 이름에 자료형은 넣지 말자