소개
새 애플리케이션을 어떻게 설계할지 정하는 건 꽤 어려운 일이다. 설계를 잘못하면 나중에 크게 머리 아플 일이 생길 수 있다. 테스트는 어려워지거나 거의 불가능해지고, 리팩토링은 끔찍한 악몽이 될 수 있다.
이 책에서 제시하는 방법이 애플리케이션을 개발하는 유일한 방법은 아니지만, 다음의 특성을 갖는 애플리케이션을 만드는 틀을 제공할 것이다.
- 테스트할 수 있는 (Testable)
- 리팩토링 할 수 있는 (Refactorable)
- 작업하기 쉬운 (Easy to work with)
- 유지하기 쉬운 (Easy to maintain)
이 책은 중대형 애플리케이션을 만들려는 사람을 대상으로 한다. 중대형 애플리케이션은 오래 유지되고, 나중에 쉽게 개선될 수 있어야 한다. 이 책에 설명된 방법이 모든 애플리케이션에 맞는건 아니며, 어떤 사람들에게는 너무 과한 내용일 수 있다.
만약 여러분의 애플리케이션이 작거나, 아직 검증되지 않은 새로운 제품이라면, 최대한 빨리 출시하는게 최선일 수 있다. 그러고 나서 이 제품이 어느 정도 성장하거나 성공한 후에 이 원칙들을 적용하는게 견고하고 오래가는 제품을 만드는 더 좋은 방법일 수 있다.
이 책에서 설명하는 원칙을 배우는데에는 학습 곡선이 적용된다. 이 방식으로 코드를 작성하는데 익숙해질 때까지는 개발속도가 느려질 것이다.
구성
이 책은 PHP 코드의 일반적인 문제와 견고하고 깨끗한 좋은 코드가 애플리케이션의 성공과 수명에 중요한 이유를 논하는 것으로 시작한다. 이어서 나쁜 코드가 가진 문제를 해결해 줄 몇몇 원칙과 디자인 패턴을 알아볼 것이다. 그리고 이 컨셉들을 이용해서 클린 아키텍처에 대해 논하고, 클린 아키텍처가 나쁜 코드가 가진 문제를 해결하는데 어떻게 도움을 주는지 알아볼 것이다.
마지막으로, 책의 후반부에서는 실제로 클린 아키텍처에 따라 애플리케이션을 구축해볼 것이다. 그런 다음 아키텍처 원칙의 효과를 입증하기 위해 컴포넌트, 라이브러리 및 프레임워크를 새로운 것으로 교체해 볼 것이다.
저자
내 이름은 크리스토퍼 윌슨이다. 2000년 즈음 부터 PHP 개발을 해왔다. 대단한 것 처럼 들리겠지만, 사실 그 세월의 대부분 동안 끔찍한 코드를 작성했다. 코드를 깔끔하게 구성하는 원칙을 담을 이런 책이 있었다면 나에게도 크게 도움이 됐을텐데..
나는 간단한 웹사이트에서부터 전자상거래 시스템과 게시판까지 모든 것을 만들어 왔다. 주로 제조에서 통신에 이르기까지 대기업 백오피스 전체를 운영하는 소프트웨어인 ERP(Enter Resource Resource Planning) 시스템과 OSS(Operational Support Systems)를 집중적으로 다뤘다. 나만의 프레임워크를 만들기도 했다. 내 프레임워크는 끔찍했지만 이 책과는 관계없는 얘기다.
나는 아내와 네 마리의 고양이와 함께 (동물원 신청은 계류 중이다.) 미시간 그랜드 래피즈에 산다. 그랜드 래피즈 PHP 개발자(GrPhpDev) 그룹 창립자 중 한 명이며 지역 커뮤니티에서 조직을 운영하고, 가르치고, 배우는 일에 깊이 관여하고 있다.
코딩 스타일에 대해
나는 PSR-2 코딩 표준을 매우 선호하고 권장한다. 하나의 공동체로서 같은 사투리를 쓰면 다른 사람의 코드 베이스를 평가하거나 이에 기여하기가 훨씬 쉬워진다. 그리고 DocBlock을 쓰는 것과 클래스와 메소드에 유용한 주석을 달기를 강력히 권한다.
하지만 편의상 이 책의 코드 예시는 브라켓의 위치를 포함해 몇가지 면에서 PSR-2 표준을 지키지 않았고, DocBlock을 많이 쓰지 않았다. PSR-2와 DocBlock의 팬인 나처럼 이런 것들이 심하게 거슬린다면 정중히 사과드린다.