본문 바로가기
반응형

개발 도서11

Five Lines of Code - 6장. 데이터 보호 getter 없이 캡슐화하기 규칙 ) getter / setter 를 사용하지 말 것 getter 를 사용하면 캡슐화를 해제하고 불변속성을 전역적으로 만들게 된다. 따라서 예상치 못한 방식으로 객체를 수정할 수 있다. 또한 디미터 법칙 (.을 2번이상 사용하지 말아야 하는 법칙) 을 위배할 수 있고 코드를 절차지향적으로 설계할 가능성이 높아지므로 getter, setter 는 가급적 사용하지 말아야 한다. 간단한 데이터 캡슐화하기 규칙 ) 공통 접사를 사용하지 말 것 예를들어 유저의 나이 증가, 유저의 나이 조회, 유저의 이름 조회 기능을 만들어야 할 때 다음과 같이 만들 수 있다. class Main { public void increaseUserAge() { } public int getUserAge.. 2023. 10. 14.
Five Lines of Code - 4장. 타입 코드 처리하기 Five Lines of Code - 4장. 타입 코드 처리하기 if else 를 사용하지 말자 public play(User user) { if (user.getStatus == Status.RUN) { user.setStamina(user.getStamina - 1); } else if (user.getStatus == Status.WAIT) { user.setStamina(user.getStamina + 1); } } 위 코드에서 user status ‘ATTACK’ 이 추가되었다. public play(User user) { if (user.getStatus == Status.RUN) { user.setStamina(user.getStamina - 1); } else if (user.getStat.. 2023. 9. 22.
Five Lines of Code - 3장. 긴 코드 조각내기 리팩터링 패턴은 크게 4단계가 있다. 긴 함수를 조각내기 타입 코드를 처리하기 유사 코드를 통합하기 데이터를 보호하기 그 중 첫번째 패턴인 ‘긴 함수 조각내기’ 에 대해 알아보자. 코드를 조각내는 규칙들 규칙 1 ) 함수의 라인 수는 5 라인으로 제한한다. 함수의 라인 수를 5 라인으로 제한하면 해당 규칙을 지키기 위해 메서드 분리를 하게 되는데, 메서드 분리를 하면서 메서드가 하나의 책임만 가지도록 코드를 개선하는 효과가 있다. 특정 사례에 맞게 줄 수를 변경할 수 있지만, 실제 줄 수는 5줄 정도로 끝나는 경우가 많다. 이렇게 메서드를 분리하면 각 메서드의 이름으로 코드의 의도를 전달할 수 있고 훨씬 이해하기가 빠르고 쉽다. 또한 작은 메서드에 적절하게 이름을 붙이면 큰 함수 이름을 정하는 데도 도움.. 2023. 8. 27.
Five Lines of Code - 2장. 리팩터링 깊게 들여다보기 코드를 개선하는 방법 가독성을 높이자! 가독성 : 의도를 전달하기 위한 코드의 성질 가독성을 높이기 위해서는 코딩 컨벤션을 지정하고 따르기, 네이밍 잘 짓기, 공백 사용 등이 있다. 유지보수성을 좋게하자! 유지보수성 : 얼마나 많은 후보를 조사해야 하는지를 나타내는 표현 변경포인트가 많으면 기능을 추가했을 때 변경해야 할 부분이 많아져서 버그가 발생하기 쉽다. 조사 단계에 시간이 오래 걸린다는 것은 코드 유지보수성이 나쁘다는 징후이며 개선이 필요하다. 리팩토링 시 성능이 떨어지면요? 리팩토링을 진행하다보면 성능이 떨어지는 상황이 있을 수 있다. 가령, 하나의 for 문 안에서 수행하던 작업들을 리팩토링으로 메서드를 분리했더니 for 문이 2개가 생겼다든지.. 하지만 리팩토링 중에는 코드가 느려지는 것에 .. 2023. 8. 19.
Five Lines of Code - 1장. 리팩터링 리팩터링하기 리팩토링이란? 기능을 변경하지 않고 더 나은 코드를 만드는 것 리팩토링을 해야하는 이유 향후 유지보수를 위해 코드의 가독성을 높이고 재사용성을 높이기 위해 (유지보수를 용이하게 하기위해) 유지보수가 용이해지면 버그가 줄어들고 수정이 쉬워진다. 코드가 간결해지기 때문에 생각하기가 편해진다. 어떤 것을 리팩토링 해야할까? 가독성이 떨어지고 유지보수하기 어려운 코드 스멜이 있는 코드 리팩토링은 언제 할까? 리팩토링은 코드 작업 시 항상 수행해야 한다. (우리가 매일 샤워하는 것처럼..) “항상 여러분이 왔을 때보다 더 좋게 만들어 놓고 떠나라” - 보이스카우트 규칙 리팩토링을 하지 않아도 되는 사례 한 번만 사용되고 삭제되는 코드 엄격한 성능 요구사항이 있는 코드 사실 위 상황이 현업에서는 기존 코드에 계속 .. 2023. 8. 19.
[이펙티브 자바] 아이템 2 - 생성자에 매개변수가 많다면 빌더를 고려하라 개발할 때 생성자로 객체를 만들면 인자가 많아질 수록 휴먼 에러가 발생할 가능성이 많아졌다. (같은 타입이라 순서를 햇갈려 값을 잘못 넣은 경우) 또한 어떤 속성의 값인지 가독성이 너무 떨어지는 문제가 있어서 매개변수가 많아지면 거의 무조건 빌더 패턴을 사용했다. 책에서는 점층적 생성자 패턴 -> 자바빈즈 패턴 을 거쳐 두 패턴의 장점을 모아 빌더 패턴 이 나왔다고 설명한다. 확실히 빌더 패턴을 사용하면 쓰기도 쉽고 읽기도 쉽다는 장점이 있다. 그런데 빌더 패턴을 사용할 때마다 매번 구현해야 된다면.. 이것 또한 엄청 불편할 것 같다는 생각이 들었다.. 다행히도 Lombok 어노테이션을 사용하면 @Builder를 통해 쉽게 빌더 패턴을 사용할 수 있다. 빌더 패턴의 장점 1. 쓰기 쉽고 읽기 쉽다. 2... 2023. 3. 14.