지운's 개발일기
기술 경력 블로그
-
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, 그 외 프로그램의 흐름을 제어할 목적으로 정말 많은 플래그들을 만들어서 사용했었습니다. 물론 필요하기에...
-
Java Refactoring MagicNumber
1일 1포스팅의 2번째이다. 어제 작성했던 예제 코드를 재탕한다. 일단 우리가 오늘 리팩토링 해볼 내용은 코드내에 하드코딩 되어있는 숫자 혹은 문자열(Magic number) 을 기호 상수(Symbolic Constant)로 치환 해볼 것이다. Magic number는 코드상에서 if, switch, while, for등 반복, 분기등에서 주로 나타나며 또한 리소스가 필요할 때 리소스 관리는 생각안하고 하드코딩한 곳에서 주로 나타나는데...