• Java Refactoring Extract class

    클래스는 속성을 가지고 행위를 처리하고 책임지는 주체입니다. 이상적인 클래스는 한가지 책임을 지는 클래스 이고 이를 행하기 위해 여러 패턴들이 만들어졌습니다. 하지만 코드가 늘어나고 기능이 추가됨에 따라 어떤 클래스들은 이러한 단일책임원칙을 지키기 어려워질 수 있습니다. 이런 경우 해당 행위를 다른 클래스에게 위임하는 방법이 있습니다. 리팩토링 카탈로그(클래스 추출) 이름 클래스 추출(Extract Class)...


  • Java Refactoring Extract method

    필드 혹은 멤버변수 가 어떤 객체가(dog,cat,person,…,etc) 가지는 속성(age,sex,height,width,sound,…,etc)이라면 메서드(method)는 객체들의 행동을(run,play,stop,increase,…,etc) 매핑하는 것이다. 우리가 일반적으로 생각하는 행동들을 코드로 매핑하기위해서 작성하다 보면 행동들을 준비하기 위해서라거나 혹은 행동의 결과를 정제 한다던가 하는 행동들이 필요해질 수 있다. 이러한 작업들은 주로 반복되기 마련인데 코드상의 반복되는 코드들을 다시 행동으로 나타내게 되면 중복 코드를 줄일 수...


  • Java Refactoring Null Object

    1일 1포스팅의 5번째이다. 오늘은 본격적으로 예제와 내용을 보기전에 정리된 카탈로그 표를 먼저 본다. 리팩토링 카탈로그(널 객체 도입) 이름 널 객체 도입(Introduce Null Object) 상황 객체를 다룸 문제 null 확인이 너무 많음 해법 null을 나타내는 특별한 객체를 도입해 ‘아무것도 안 함’ 이라는 처리를 함 결과 null 확인이 줄어듬 방법 널 객체...


  • Java Refactoring Assertion

    1일 1포스팅의 4번째이다. Assertion은 우리의 프로그램에 필요한 조건들에 대한 검증을 뜻합니다. 예를 들어서 우리의 java프로그램이 ex1처럼 arguments로 값을 받아야하는데 꼭 하나 이상은 받아야 하는 프로그램이 있다. ex1 package example_4_assertion; import java.util.ArrayList; public class Application{ public static void main(String args[]) { ArrayList<String> dummyList = new ArrayList<>(); for(String item:args) { dummyList.add(item); }...


  • Java Refactoring Control Flag

    1일 1포스팅의 3번째이다. 플래그(Flag)란 원래 ‘깃발’이란 뜻인데, 프로그래밍에서는 ‘상태를 기록하고 처리 흐름을 제어하기 위한 boolean 변수’를 의미합니다. 제가 고등학생 때 AVR, 8051, PIC 칩 제어용 프로그램을 작성할 때 정말 많이 사용했던 기억이 나네요. busy(LCD, memory, etc) flag, 그 외 프로그램의 흐름을 제어할 목적으로 정말 많은 플래그들을 만들어서 사용했었습니다. 물론 필요하기에...