1. 소프트웨어 늪지대 [ 바보들의 황금 ] 일단 작성하고 고쳐보는 개발 소프트웨어 개발은 설계없이 일단 작성하고 고친다고 해서 빨리 끝나지 않는다. 그리고 나중으로 갈수록 초기 결함을 수정하기 위해 많은 시간이 쓰여 대부분의 시간을 허비하게 되며 부숴지기 쉬워진다. 그럼에도 일단 개발하는 이유는 실행 즉시 얼만큼 진척했는지 알 수 있고, 프로젝트를 진행하는데 어떠한 훈련도 필요 없기 때문이다. 하지만 이러한 방식은 첫눈에 좋아 보일지몰라도, 숙련된 개발자들은 그것이 얼마나 가치없는 것 인지 안다. 품질에 집중하라 품질을 버리고 비용이나 시간을 줄이려는 시도는 대부분 비용을 높이고 일정을 늘리기만 한다. 오히려 95% 이상의 결함을 제품 출시 전에 제거하는 프로젝트가 가장 생산성이 높다. 바보들의 황금 ..
1. 자주 사용되는 인텔리제이(IntelliJ) 단축키 모음(맥북, Mac OS) [ IntelliJ 단축키 모음 ] 자동완성 Command + Enter 메서드 오버라이드 Ctrl + O 인터페이스 구현 Ctrl + I 커서가 가리키는 부분 리팩터링 Ctrl + T 커서가 가리키는 부분을 상수로 빼기 Command + Option + C 이름 일괄 변경(클래스, 변수, 기타 등등) Shift + F6 변수 생성 Command + Option + V 줄 제거 Command + X 해당 코드를 사용중인 코드로 이동 Command + 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..
클린 아키텍처를 읽는데, 잘 와닿지 않거나 이해가 가지 않는 내용이 상당히 많이 있었습니다. 하지만 이 책을 읽고 얻어가는 자그만한 부분이라도 정리를 해두고자 합니다. 책에서 다루는 핵심적인 내용들이 아닌, 개인적으로 기억하고 싶은 내용들만 정의하였습니다. 1. 단일 책임 원칙(SRP, Single Responsibility Principal)의 재정의 단일 책임의 원칙은 단일 모듈은 변경의 이유가 하나, 오직 하나뿐이어야 한다는 것이다. 이것은 하나의 일만 해야한다는 원칙과는 다르다. 여기서 말하는 변경의 이유는 사용자와 이해관계자를 가리키는데, 작성한 모듈들이 여러 대상들에 의해 변경되어서는 안된다는 것이다. 이러한 내용을 책에서는 하나의 모듈은 오직 하나의 액터에 대해서만 책임져야 한다고 SRP를 ..