✍️ 악취 15 : 추측성 일반화 지금 당장 불필요함에도 나중에 필요할 것 같다는 추측으로 코드를 일반화 시켜 작성했지만 결국엔 사용되지 않는 상황이 발생한다. 모든 경우가 그렇진 않지만 특정 기능을 구현한 코드보다 일반화시킨 코드가 더 복잡하고 이해하기 어려운 경우가 많다. 그렇기에 일반화된 코드가 범용적으로 사용하지 않는다면, 앞으로도 그럴 계획이 없다면 리팩토링을 적용해볼만 하다. 여기 추측성 일반화를 위한 네 가지 리팩토링 기법이 있다. 1. "계층 합치기", 추상 클래스를 만들었지만 유효하지 않다면 2. "함수 인라인, 클래스 인라인", 불필요한 위임이 있다면 3. "함수 선언 변경하기", 재사용을 고려해 추가했지만 사용하지 않는 매개변수가 존재한다면 4. "죽은 코드 제거하기", 실행되지 않는..
✍️ 서론 MySQL 5.7부터 JSON 타입을 지원하면서 JSON 타입을 다루기 위한 여러 함수들이 추가되었다. 관련 함수의 사용법을 예제와 함께 정리해 보려 한다. 🍊 테이블 + 데이터 생성 예제 테이블 생성 CREATE TABLE user ( id INT(11) NOT NULL, info JSON NULL, PRIMARY KEY (id)) ENGINE = InnoDB; 예제 데이터 생성 INSERT user VALUES(1, '{"name": "kangworld", "age": 20 "address": "seoul", "hobby": ["baseball", "bowling"]}'); mysql> SELECT * FROM user; +----+--------------------------------..
✍️ 악취 14 : 성의없는 요소 개발과정에서 정의된 변수, 메서드, 클래스가 시간이 지남에 따라 필요 없는 경우가 있다. 가령 확장성을 고려해서 미리 추가된 변수와 기능들이 그러한 경우에 속한다. 혹은 리팩토링의 결과로 더 이상 필요 없는 요소들이 나올 수 있다. 리팩토링 책의 저자는 이와 같은 요소를 '성의 없는 요소'라고 정의했다. 재사용을 고려해서 함수 추출하기 리팩토링이 적용된 어느 메서드가 계속해서 재사용이 되지 않고 한 곳에서만 사용한다면 '함수 인라인'을 적용할 수 있다. 이와 유사하게 클래스의 경우라면 '클래스 인라인'을 적용하면 된다. 여기 성의 없는 요소 악취를 해결하기 위한 세 가지 리팩토링 기법이 있다. 1. "함수 인라인" 2. "클래스 인라인" 3. "계층 합치기" 불필요한 상..
✍️ 악취 13 : 반복문 프로그래밍 언어 초기엔 for와 while을 사용해서 반복문을 구현했지만, 비교적 최근 Java와 같은 언어에서 함수형 프로그래밍을 지원하게 되며 반복문의 대안인 파이프라인이 등장했다. Java의 Stream이 대표적인 예시인데, Collection의 Stream을 열고 중개 오퍼레이션을 호출하며 연산을 수행하는 일련의 흐름을 Stream pipeline이라 부른다. 파이프라인을 사용하면 코드가 간결해지고 의도가 명확하게 드러나 가독성이 증가한다는 장점이 있기에 충분히 활용할만하다. 하지만 파이프라인이 고전적인 반복문보다 항상 좋다고 말하긴 어렵다. 반복문이 보다 효율적이고 가독성이 좋은 경우는 무수히 많기에 적절한 판단을 거쳐서 사용해야 한다. 여기 반복문 악취를 해결하기 위..
✍️ 악취 11 : 기본형 집착 (2) 표현하려는 데이터가 심플하다면 언어가 제공하는 기본 타입으로도 충분히 구현할 수 있지만, 표현할 데이터 구조가 복잡해지고 제공할 기능이 복잡해진다면 단순 기본형으로 원활한 기능을 구현하기 어렵다. 가령 단순 화씨온도를 표현하고 싶다면 실수형으로 가능하겠지만 화씨, 섭씨 등 다양한 온도를 표현하고 싶다면 별도의 클래스로 제공하는 것이 더 합리적일 것이다. 여기 기본형 집착 악취를 해결하기 위한 두 가지 리팩토링 기법이 있다. 1. "기본형을 객체로 바꾸기" 2. "조건부 로직을 다형성으로 바꾸기" 🍊 조건부 로직을 다형성으로 바꾸기 비슷하지만 서로 다른 것을 표현하는 경우 문자열, 열거형, 숫자 등을 사용하기도 한다. 가령 고객의 등급을 표현할 때 열거형을 사용하는 ..
✍️ 악취 11 : 기본형 집착 표현하려는 데이터가 심플하다면 언어가 제공하는 기본 타입으로도 충분히 구현할 수 있지만, 표현할 데이터 구조가 복잡해지고 제공할 기능이 복잡해진다면 단순 기본형으로 원활한 기능을 구현하기 어렵다. 가령 단순 화씨온도를 표현하고 싶다면 실수형으로 가능하겠지만 화씨, 섭씨 등 다양한 온도를 표현하고 싶다면 별도의 클래스로 제공하는 것이 더 합리적일 것이다. 여기 기본형 집착 악취를 해결하기 위한 두 가지 리팩토링 기법이 있다. 1. "기본형을 객체로 바꾸기" 2. "조건부 로직을 다형성으로 바꾸기" 🍊 기본형을 객체로 바꾸기 개발 초기엔 기본 타입으로 표현한 데이터를 기능이 추가됨에 따라, 구조가 확장됨에 따라 더 다양한 형태로 표현해야 하는 경우가 발생한다. 앞서 언급했던 ..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.