0. 들어가기 테스트 주도 개발(TDD, Test-Driven Development)의 궁극적인 목표는 작동하는 깔끔한 코드의 작성이다. 작동하는 깔끔한 코드가 훌륭한 목표임을 말해주는 수많은 이유가 있다. 예측 가능한 개발 방법이다. 끊임없이 발생할 버그에 대해 걱정하지 않고, 일이 언제 마무리될지 알 수 있다. 코드가 가르쳐주는 모든 교훈을 학습할 기회를 갖게 된다. 처음 생각나는 대로 후딱 완료해 버리면 두 번째 것, 더 나은 것에 대해 생각할 기회를 잃게 된다. 개발한 소프트웨어는 사용자의 삶을 향상시켜 준다. 동료들이 당신을 존경할 수 있게 해주며, 나 역시 동료들을 존경할 수 있게 된다. 작성하는 동안 기분이 좋다. 테스트 주도 개발은 자동화된 테스트로 개발을 이끌어가는 방식이다. 테스트 주도..
1. 소프트웨어 늪지대 [ 바보들의 황금 ] 일단 작성하고 고쳐보는 개발 소프트웨어 개발은 설계없이 일단 작성하고 고친다고 해서 빨리 끝나지 않는다. 그리고 나중으로 갈수록 초기 결함을 수정하기 위해 많은 시간이 쓰여 대부분의 시간을 허비하게 되며 부숴지기 쉬워진다. 그럼에도 일단 개발하는 이유는 실행 즉시 얼만큼 진척했는지 알 수 있고, 프로젝트를 진행하는데 어떠한 훈련도 필요 없기 때문이다. 하지만 이러한 방식은 첫눈에 좋아 보일지몰라도, 숙련된 개발자들은 그것이 얼마나 가치없는 것 인지 안다. 품질에 집중하라 품질을 버리고 비용이나 시간을 줄이려는 시도는 대부분 비용을 높이고 일정을 늘리기만 한다. 오히려 95% 이상의 결함을 제품 출시 전에 제거하는 프로젝트가 가장 생산성이 높다. 바보들의 황금 ..
1. 자주 사용되는 인텔리제이 단축키 모음(맥북, Mac OS)[ IntelliJ 단축키 모음 ]자동완성Command + Enter메서드 오버라이드Ctrl + O인터페이스 구현Ctrl + I커서가 가리키는 부분 리팩터링Ctrl + T커서가 가리키는 부분을 상수로 빼기Command + Option + C이름 일괄 변경(클래스, 변수, 기타 등등)Shift + F6변수 생성Command + Option + V줄 제거Command + X해당 코드를 사용중인 코드로 이동Command + B해당 코드의 타입 선언으로 이동Command + Shift + B구현 코드로 이동Command + Option + B코드 위 아래로 이동Command + Shift + 위/아래최근 탭으로 이동Command + E미리보기와 함께..
1. 프로그래밍 실전 [ 조엘 테스트: 더 나은 코드를 위한 12단계 ] 다음과 같은 소프트웨어 팀 평가 테스트를 진행하여, 10점 이하라면 심각한 문제가 있는 것이다. 사실 대다수의 회사는 2~3점 수준이다. 소스코드 관리 시스템을 사용하고 있습니까? 한방에 빌드를 만들어낼 수 있습니까? 일일 빌드를 하고 있습니까? 버그 추적시스템을 운영하고 있습니까? 코드를 새로 작성하기 전에 버그를 수정합니까? 일정을 업데이트하고 있습니까? 명세서를 작성하고 있습니까? 조용한 작업 환경에서 일하고 있습니까? 경제적인 범위 내에서 최고 성능의 도구를 사용하고 있습니까? 테스터를 별도로 두고 있습니까? 프로그래머 채용 인터뷰 때 코딩 테스트를 합니까? 무작위 사용편의성 테스트(방금 막 작성한 코드를 다른 사람에게 사용..
이번에는 이전에 작성했던 프로젝트의 코드를 실무처럼 리팩토링 해보고자 합니다. 해당 프로젝트의 원본은 이 링크에서 확인할 수 있습니다. 해당 프로젝트는 사용자의 로그인/회원가입/목록 조회를 제공하는 아주 심플한 기능밖에 없는 프로젝트임에도 불구하고, 리팩토링할 사항이 상당히 많이 있는 것 같습니다. 차근차근 하나씩 고쳐보도록 하겠습니다. 1. 기존 SpringBoot 프로젝트 실무처럼 리팩토링 하기 [ 1. Raw 타입은 사용하지 말자 ] 위의 예제에서는 다음과 같이 Controller에서 데이터를 반환할 때 ResponseEntity를 Raw 타입으로 반환하고 있다. @RestController @RequestMapping(value = "/error") @Log4j2 public class Error..