리팩터링 2판 스터디의 세 번째 글입니다. 오늘은 냄새가 나는... 그러니까 리팩터링해야 하는 코드가 어떤 것인지 구분하는 방법을 알아봅니다.
이 책은 대체로 마틴 파울러가 썼지만, 이 챕터는 마틴 파울러의 멘토 겸 지인인 켄트 벡(Kent Beck)이 함께 집필했습니다(켄트 벡은 애자일, 테스트 주도 개발 등 여러 개발 방법론의 선구자이기도 합니다). 원서는 마틴 파울러, 켄트 벡 공저로 되어 있고 한국어판은 마틴 파울러 집필로 되어 있는 게 의아했는데, 이 장에만 참여해서 한국어판의 저자 목록에서는 빠진 모양이에요.
이 장은 켄트와 내가 함께 집필했다는 점을 강조하기 위해 '나'가 아닌 '우리'란 표현을 사용한다. 어느 부분을 누가 쓴 것인지는 쉽게 구분할 수 있다. 웃긴 농담은 필자가 쓴 것이고 나머지는 켄트가 쓴 것이다. – p.113
리팩터링 2판 스터디의 두 번째 글입니다. 책을 순서대로 읽기보다 관심도 순서대로(그래야 중간에 때려치더라도 제가 관심있는 부분을 최대한 많이 정리해 놓을 수 있죠!) 매번 한 챕터씩 정리하는 식으로 진행하려고 합니다.
그리고 생각보다 엄청나게 분량이 많더라고요! 여기에는 간단히 각 리팩터링 기법의 절차와 요점만 요약해 놓았지만, 책에서 설명해 주는 방대한 예시 없이 이 내용만 읽어서는 이해가 어려울 수 있으니 책을 읽어 보시는 것을 추천합니다. 책을 읽고 나서 나중에 필요한 기법만 찾아볼 때는 이 정리가 유용할 거예요.
#MySQL 에 뷰(View)라는 기능이 있다는 것 알고 계셨나요? 대충 다른 테이블의 값을 참조해서 가상의 테이블 같은 걸 만들어 주는 기능입니다. 그런데 혹시 뷰가 색인(인덱싱)을 지원하지 않는다는 사실도 알고 계셨나요? 오늘 저는 그걸 몰라서 멀쩡한 테이블을 놔두고 뷰에 쿼리를 넣는 코드를 (보기 더 깔끔하다는 이유로) 만들었다가 쿼리 한 번에 2분이 걸리는 광경을 목도하고 말았습니다. 여러분은 저와 같은 실수를 저지르지 않도록 조심하세요.