본문 바로가기

Study14

1장 비즈니스 코드를 기술코드로부터 분리한다고 하는데 비즈니스 코드는 무엇이고 기술 코드는 무엇인가 비즈니스 규칙을 도메인 핵사곤에 캡슐화 했다고 하는데 그 뜻이 무엇인가. 그전에, 비즈니스 규칙이란 무엇인가 유스케이스와 입력포트, 출력포트의 관계는 Service-ServiceImpl 관계로 보이는데 무언가 차이가 있는건가? 출력포트를 통해 외부 데이터를 받는다. -> 외부로부터 데이터를 출력 받는다는 의미? 도메인 헥사곤 실제 세상의 문제를 이해하고 모델링하는 활동을 나타냄 기술에 구애받지 않는 형태로 표현되어야 함 중요 비즈니스 데이터와 규칙 관련 엔티티들이 있는데 이들이 실제 문제에 대한 모델을 나타냄 엔티티와 값객체로 구분될 수 있음. 애플리케이션 핵사곤 애플리케이션 특화 작업을 추상적으로 처리하는 곳.. 2023. 11. 27.
리팩터링 4 4장 테스트 구축하기 리팩터링만으로는 부족하다. 뒷받침 해줄 테스트가 없다면 불가피하게 저지르는 실수를 잡아줄 수 없다. 4.1 자가 테스트 코드의 가치 테스트가 잘 확립되어 있으면 생산성이 급상승 한다. 테스트를 작성하기 가장 좋은 시점은 프로그래밍 시작 전이다. 테스트를 작성하면서 원하는 기능을 추가하기 위해 무엇이 필요한지 고민하게 되어 구현보다는 인터페이스에 집중하게 된다. 테스트를 모두 통과한 시점이 개발 완료 시점임을 확실히 할 수 있다. 4.2 테스트할 샘플 코드 4.3 첫 번째 테스트 import org.junit.Test; import static org.junit.Assert.*; public class ProvinceTest { @Test public void testShortfall.. 2023. 8. 31.
리팩터링 3 코드에서 나는 악취 3.1 기이한 이름 코드를 간단명료하게 표현하는 데 가장 중요한 요소 하나는 바로 ‘이름’이다. 이름을 명확하게 지어 각각이 무슨 일을 하고 어떻게 사용해야 하는지 알 수 있어야 한다. 만약 마땅한 이름이 떠오르지 않는다면 설계에 더 근본적인 문제가 숨어 있을 가능성이 높다. 혼란스러운 이름을 정리하다 보면 코드가 훨씬 간결해질 때가 많다. 3.2 중복 코드 중복 코드는 서로 미묘한 차이점은 없는지 세심하게 확인해야 하고 그 중 하나에 변화가 생기면 다른 비슷한 코드들 역시 세심하게 살펴보고 적절히 수정해야 한다. 3.3 긴 함수 오랜 기간 잘 활용되는 코드는 짧은 함수로 구성되어 있다. 코드가 끝없이 위임하는 방식으로 작성되면 코드를 이해하고, 공유하고, 선택하기 쉬워진다. 짧은 함.. 2023. 8. 31.
리팩터링 2 2장 리팩터링 원칙 리팩터링 전반에 적용되는 원칙 몇 가지를 알아봅시다. 2.1 리팩터링 정의 동사 명사 둘 다 결국 겉보기 동작은 그대로 유지한 채, 코드를 이해하고 수정하기 쉽도록 특정한 방식에 따라 내부 구조를 변경하는 것이다. 리팩터링하는 동안에는 코드가 항상 정상 작동하기 때문에 전체 리팩터링이 끝나지 않았더라도 언제든 멈출 수 있다. 리팩터링 전 후로 코드가 똑같이 동작해야 하는데 이는 항상 똑같을 수는 없다. 가령 함수 추출하기 를 사용하면 콜스택이 달라져 성능이 변할 수 있다. 하지만 사용자 관점에서는 달려져서는 안된다. 함수 선언 바꾸기 혹은 함수 옮기기 같은 리팩터링을 하면 모듈의 인터페이스가 바뀔 수 있다. 심지어 리팩터링 과정에서 발견된 버그는 리팩터링 후에도 남아 있어야 한다. (.. 2023. 8. 31.
728x90