Clean Code

    Java 리팩토링 - 메서드 추출 시 매개변수가 많아질 경우 [3. 객체 통째로 넘기기]

    1. 알고자 하는 것 - 메서드를 추출할 때(Extract method), 해당 메서드에 넘겨야 하는 매개변수가 많아질 경우의 리팩토링 1. 임시 변수를 질의 함수로 바꾸기 (Replace Temp with Query) 2. 매개변수 객체 만들기 (Introduce Parameter Object) 3. 객체 통째로 넘기기 (Preserve Whole Object) 2. 알게된 것 하나의 객체에서 구할 수 있는 여러 값을 메서드의 매개변수로 넘겨주는 경우, 객체를 통째로 넘겨줄 수 있다. 이를 통해 결과적으로 아래와 같이 매개변수의 개수를 줄일 수 있다. //(BEFORE) // 매개변수로 String, Map을 넘겨준다. private String getMarkdownForParticipant(Strin..

    Java 리팩토링 - 메서드 추출 시 매개변수가 많아질 경우 [2. 매개변수 객체 만들기]

    1. 알고자 하는 것 - 메서드를 추출할 때(Extract method), 해당 메서드에 넘겨야 하는 매개변수가 많아질 경우의 리팩토링 1. 임시 변수를 질의 함수로 바꾸기 (Replace Temp with Query) 2. 매개변수 객체 만들기 (Introduce Parameter Object) 3. 객체 통째로 넘기기 (Preserve Whole Object) 2. 알게된 것 매개변수 객체 만들기 (Introduce Parameter Object) - 같은 매개변수 패턴이 여러 메서드에 걸쳐 나타난다면, 그 매개변수들을 묶은 자료구조를 만들 수 있다. - 이를 통해 해당 데이터간의 관계를 보다 명시적으로 나타낼 수 있다. (클래스명을 명시적으로 지정할 수 있으므로) - 함수에 전달할 매개변수 개수를 ..

    Java 리팩토링 - 메서드 추출 시 매개변수가 많아질 경우 [1. 임시 변수를 질의 함수로 바꾸기]

    1. 알고자 하는 것 - 메서드를 추출할 때(Extract method), 해당 메서드에 넘겨야 하는 매개변수가 많아질 경우의 리팩토링 1. 임시 변수를 질의 함수로 바꾸기 (Replace Temp with Query) 2. 매개변수 객체 만들기 (Introduce Parameter Object) 3. 객체 통째로 넘기기 (Preserve Whole Object) 2. 알게된 것 임시 변수를 질의 함수로 바꾸기 (Replace Temp with Query) - 긴 메서드를 메서드 추출을 통해 리팩토링 할 때, 임시 변수를 메서드로 추출하여 분리함으로써 매개변수의 개수를 줄인다. try (FileWriter fileWriter = new FileWriter("participants.md"); PrintWr..

    Java 리팩토링 - 짧은 메서드 vs 긴 메서드 & Extract Method

    1. 알고자 하는 것 - 짧은 메서드 vs 긴 메서드, 무엇이 더 좋은 코드인가? - 짧은 메서드를 만들기 위한 메서드 추출 (Extract method) 2. 알게된 것 짧은 메서드 vs 긴 메서드, 무엇이 더 좋은 코드인가? - (긴 메서드) 메서드가 길수록 코드의 가독성이 떨어진다. - (짧은 메서드) 짧고 많은 메서드로 구성되어 문맥 전환이 많아진다. - "과거에는" 과도한 서브루틴 호출로 오버헤드가 존재했다. - 현재는 서브루틴 호출으로 인한 오버헤드까지 고려하며 코드를 짤 필요는 없다. - 짧은 메서드에 대해 "좋은 이름 (= 가독성이 좋은 이름)"을 사용했다면 해당 메서드의 코드를 보지 않아도 의미를 이해할 수 있다. - 기억하자. '구현'을 나타내야 하는 것이 아니라, '의미'를 나타내는 ..