반응형
가독성 높이는 습관 - 심미적 방법들
코드 일관성 지키기
코드 정렬
public AdminResponse getResponse(Long userId) {
User user = new User();
if(user.getAddress()!= null &&user.getStatus()== User.Status.AUTHENTICATION) {
// doSomething
}
if (!user.unregistedAddress()&& ! user.unauthenticated()) {
// doSometing
}if (user.registedAddress() && user.unauthenticated()){
// doSomething
}
return null;
}
- Intellij
- Mac : Cmd + Option + L
- Window : Ctrl + Alt + L
- Eclipse
- Mac : Cmd + Shift + F
- Window : Ctrl + Shift + F
- VS Code
- Mac : (문서전체)Shift + Option + F, (선택영역)Cmd + K, F
- Window : Ctrl + K, F (or Alt + F8)
public AdminResponse getResponse(Long userId) {
User user = new User();
if (user.getAddress() != null && user.getStatus() == User.Status.AUTHENTICATION) {
// doSomething
}
if (!user.unregistedAddress() && !user.unauthenticated()) {
// doSometing
}
if (user.registedAddress() && user.unauthenticated()) {
// doSomething
}
return null;
}
문단 구분하기
public void order(User user, long bookId) {
Book book = findBook(bookId);
UserInfo userInfo = findUserInfo(user);
BookStock bookStock = findBookStock(bookId);
chackOnSale(book);
checkDormant(userInfo);
checkEnoughAge(book, userInfo);
checkEnoughStock(bookStock);
bookStock.decreaseStock();
bookStockRepository.save(bookStock);
bookOrderRepository.save(createBookOrder(user, book));
}
- 기능별 개행
public void order(User user, long bookId) {
Book book = findBook(bookId);
UserInfo userInfo = findUserInfo(user);
BookStock bookStock = findBookStock(bookId);
chackOnSale(book);
checkDormant(userInfo);
checkEnoughAge(book, userInfo);
checkEnoughStock(bookStock);
bookStock.decreaseStock();
bookStockRepository.save(bookStock);
bookOrderRepository.save(createBookOrder(user, book));
}
- 읽어야 할 대상과 대상의 validation 기준으로 정렬
public void order(User user, long bookId) {
Book book = findBook(bookId);
chackOnSale(book);
UserInfo userInfo = findUserInfo(user);
checkDormant(userInfo);
checkEnoughAge(book, userInfo);
BookStock bookStock = findBookStock(bookId);
checkEnoughStock(bookStock);
bookStock.decreaseStock();
bookStockRepository.save(bookStock);
bookOrderRepository.save(createBookOrder(user, book));
}
함수나 Dto의 네이밍
interface ProductService {
Optional<Product> findById(Long id);
List<Product> findAll(Long id);
}
interface ItemService {
Optional<Item> get(Long id);
List<Item> gets(Long id);
List<Item> getItemList(Long id);
List<Item> getItems(Long id);
}
interface OptionService {
Optional<Option> select(Long id);
List<Option> selectAll(Long id);
}
논리연산 순서
public void foo(String address) {
if (address.length() > ADDRESS_MAX_LENGTH) {
}
if (ADDRESS_MAX_LENGTH < address.length()) {
}
함수내 추상화 수준은 최대한 맞추기
- 컴퓨터 과학에서 추상화(abstraction)는 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것을 말한다.
- 추상화 수준이 높을수록 사람이 이해하기 쉬워짐
Phone phone = new Phone();
phone.call("010-1234-5678");
정리 - 일관성 지키기
- 1. 코드 정렬
- 2. 문단 구분
- 3. 함수나 Dto 네이밍
- 4. 논리연산의 위치
- 5. 추상화 수준 맞추기
반응형
'cs > java-spring-boot' 카테고리의 다른 글
[Zero-base] 10-1. 익셉션 핸들링 (1) (0) | 2022.03.18 |
---|---|
[Zero-base] 9-15. 주석 (0) | 2022.03.18 |
[Zero-base] 9-13. 심플하게 구성하기 (0) | 2022.03.17 |
[Zero-base] 9-12. Side effect 줄이기 (0) | 2022.03.17 |
[Zero-base] 9-11. Optional 제대로 사용하기 (0) | 2022.03.17 |