전체글149 [리팩토링 1판] Chapter 05. 리팩토링 기법 카탈로그에 대해 Chapter 05. 리팩토링 기법 카탈로그에 대해 6장부터 12장까지는 리팩토링 기법을 하나씩 체계적으로 설명하는 카탈로그 형식으로 구성했다. 각 리팩토링 기법 절의 구성 이름 요약 동기 방법 예제 리팩토링를 이해하기 위해서는 각 카탈로그의 예제를 직접 적용해보아야 한다. 리팩토링 1판의 자바 버전은 무려 1.1이라고 한다. (허..) 참조 검색 대다수의 리팩토링 작업에서는 메서드, 인스턴스 값, 클래스 등으로의 참조 부분을 전부 찾아야 된다. 이 때는 IDE의 검색 기능을 활용하는 것이 좋다. 특히 확인 없이 단번에 찾아바꾸기를 실시하지 말고, 각 참조를 일일이 검사하면서 치환하려는 대상이 맞는지 확인해야 한다. 검색 패턴을 잘 활용하는 사람도 있겠지만 실수할 확률도 존재하기 때문이다. 또한 타입을 .. 2024. 3. 30. [리팩토링 1판] Chapter 04. 테스트 작성 Chapter 04. 테스트 작성 리팩토링을 실시하기 위한 필수 전제조건은 반드시 견고한 테스트를 해야 한다는 것이다. 자가 테스트 코드의 가치 테스트 코드를 작성하지 않으면 지금 당장은 개발을 빠르게 할 수 있겠지만, 나중가면 오히려 개발 속도가 현저하게 떨어진다. 심지어 속도뿐만 아니라 정확성, 신뢰성, 효율성 모두 떨어진다. 버그를 만날 확률이 높아지고, 버그를 찾느라 디버깅을 수행하지만 역시 시간이 오래 걸린다. 기능을 개발하면서 단계적으로 테스트 코드를 통해 본인이 작성한 로직에 대해서 검증할 수 있어야 한다. 테스트 코드의 장점은 데이터가 맞는지 화면으로 확인하지 않아도 된다. 테스트 코드를 작성하면 해당 테스트에 대한 성공이나 실패가 뜨므로, 직관적이다. 또한 버그를 쉽고 빠르게 찾을 수 있.. 2024. 3. 29. [리팩토링 1판] Chapter 03. 코드의 구린내 Chapter 03. 코드의 구린내 리팩토링이 필요한 경우는 코드에서 구린내가 날 때이다. (?..) 어떤 경우가 구린내가 나는지 알아보자. 중복코드 구린내의 제왕은 누가 뭐래도 중복코드다. 똑같은 구조가 두 군데 이상 있을 때는 그 부분을 하나로 통일하면 프로그램이 개선된다. 중복코드의 가장 단순한 예는 한 클래스의 두 메서드 안에 같은 코드가 들어 있는 경우다. 이럴 때는 메서드 추출 기법을 적용해서 중복을 없앤 후 메서드 상향 기법을 적용하면 된다. 장황한 메서드 최적의 상태로 장수하는 객체 프로그램을 보면 공통적으로 메서드 길이가 짧다. 객체지향 프로그래밍 경험이 쌓일수록 짧은 메서드의 중요성을 실감한다. 짧은 메서드를 이해하기 쉽게 하려면 메서드명을 잘 정해야 한다. 메서드의 기능을 한눈에 알 .. 2024. 3. 29. [리팩토링 1판] Chaptor 02. 리팩토링 개론 Chapter 02. 리팩토링 개론 리팩토링은 무엇인가 리팩토링: 겉으로 드러나는 기능은 그대로 둔 채, 알아보기 쉽고 수정하기 간편하게 소프트웨어 내부를 수정하는 작업 리팩토링의 목적은 소프트웨어를 더 이해하기 쉽고 수정하기 쉽게 만드는 것이다. 리팩토링은 겉으로 드러나는 소프트웨어 기능에 영향을 주지 않는다. 🔑 주의점 기능을 추가할 땐 코드를 수정하지 말고 기능만 추가해야 한다. 진행 상태를 파악하려면 테스트를 추가하고 그 테스트들이 잘 동작하는지 확인하면 된다. 리팩토링할 때는 코드를 추가하지 말고 코드 구조 개선만 해야 한다. 앞서 작성한 테스트는 전혀 추가하지 않고 오로지 코드 구조만 수정해야 한다. 리팩토링은 왜 해야 하나 리팩토링의 가치는 확실하며, 적어도 코드를 언제든 쉽게 이해할 수 있.. 2024. 3. 27. [리팩토링 1판] Chapter 01 - 맛보기 예제 Chapter 01. 맛보기 예제 전체 코드는 https://github.com/azurealstn/refactoring 에서 확인할 수 있습니다. 프로그램 목적: 비디오 대여점에서 고객의 대여료 내역을 계산하고 출력하는 간단한 프로그램 고객이 대여한 비디오와 대여 기간을 표시한 후, 비디오 종류와 대여 기간을 토대로 대여료를 계산한다. 비디오 종류는 일반물, 아동물, 최신물 세 종류이며, 대여료 계산과 더불어 내역을 바탕으로 적립 포인트도 계산되는데, 이 포인트는 비디오가 최신물인지 아닌지에 따라 달라진다. 클래스 다이어그램 Movie 클래스: 비디오 종류를 나타내는 priceCode Rental 클래스: 대여 기간을 나타내는 daysRented Customer 클래스: 고객을 나타내며, 고객의 대여료.. 2024. 3. 26. 다익스트라 알고리즘 다익스트라(Dijkstra) 알고리즘 다익스트라(Dijkstra) 알고리즘은 도로 교통망 같은 곳에서 나타날 수 있는 그래프에서 꼭짓점 간의 최단 경로를 찾는 알고리즘이다. 또한 특정한 하나의 정점에서 다른 정점으로 가는 최단 경로를 찾는다. 아래의 경우 다익스트라를 활용한다. 한 정점에서 다른 한 정점까지의 최단 경로 한 정점에서 다른 모든 정점까지의 최단 경로 모든 정점에서 다른 모든 정점까지의 최단 경로 여기서 각 정점은 노드로 표현하고, 정점 간 연결된 선은 간선으로 표현한다. 참고로 다익스트라 알고리즘은 가중치 방향그래프에서 활용될 수 있고, 가중치의 값은 절대로 음수값이 나올 수 없다. 또한 다익스트라 알고리즘은 매번 최단 경로 찾는 즉, 최적의 해를 찾는 과정을 거쳐 그리디 알고리즘으로 분류.. 2024. 2. 17. 이전 1 2 3 4 5 6 7 8 ··· 25 다음