2011년 5월 26일 목요일

Split Temporary Variable

double temp = 2 * (_height + _width);
System.out.println (temp);
temp = _height * _width;
System.out.println (temp);


final double perimeter = 2 * (_height + _width);
System.out.println (perimeter);
final double area = _height * _width;
System.out.println (area);


루프 안에 있는 변수나 collecting temporary variable도 아니 임시변수에 값을 여러 번 대입하는 경우에는 각각의 대입에 대해서 따로따로 임시변수를 만들어라.

! 동기
- 어떤 변수든 여러가지 용도로 사용되는 경우에는 각각의 용도에 대해 따로 변수를 사용하도록 바꾸어야 한다. 왜냐하면 하나의 임시 변수를 두 가지 용도로 사용하면 코드를 보는 사람이 매우 혼란스러울 수 있다.
! 절차
- 임시 변수가 처음 선언된 곳과 임시변수에 값이 처음 대입된 곳에서 변수의 이름을 바꾼다.
- 새로 만든 임시변수를 final 로 선언한다.
- 임시변수에 두 번째로 대입하는 곳의 직전까지 원래 임시변수를 참조하는 곳을 모두 새로운 이름으로 바꾼다.
- 임시변수에 두 번째로 대입하는 곳에서 변수를 선언한다.
! 관련 리펙토링
@ Remove Assignments to Parameters
파라미터에 값을 대입하는 코드가 있으면, 대신 임시변수를 사용하도록 하라.
! 동기
- 값에 의한 전달(pass by value)과 참조에 의한 전달(pass by reference)을 혼동하게 때문이다.
- 자바에서는 파라미터에 값을 대입해서는 안된다.
! 절차
- 파라미터를 위한 임시변수를 만든다.
- 파라미터에 값을 대입하는 코드 이후에서 파라미터에 대한 참조를 임시변수로 바꾼다.
- 파라이터에 대입하는 값을 임시변수에 대입하도록 바꾼다.
! 관련 리펙토링

댓글 없음:

댓글 쓰기

ETL 솔루션 환경

ETL 솔루션 환경 하둡은 대용량 데이터를 값싸고 빠르게 분석할 수 있는 길을 만들어줬다. 통계분석 엔진인 “R”역시 하둡 못지 않게 관심을 받고 있다. 빅데이터 역시 데이터라는 점을 볼때 분산처리와 분석 그 이전에 데이터 품질 등 데이...