You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
사용자 인터페이스를 통해 자신의 유능함을 나타낸다.<br />
● 작다<br />
<strong>PHP</strong> 컴포넌트는 필요 이상으로 크지 않다. 컴포넌트가 담고 있는 코드는 한 가지 문제를 해결하기 위해 필요<br />
한 최소한의 양이다. 코드량은 경우에 따라 다른데 <strong>PHP</strong> 컴포넌트에는 <strong>PHP</strong> 클래스가 하나만 있을 수도 있고<br />
서브네임스페이스로 구성된 <strong>PHP</strong> 클래스가 여러 개 있을 수도 있다. <strong>PHP</strong> 컴포넌트에 사용되는 클래스 개수<br />
는 정해져 있지 않다. 그저 문제를 해결할 수 있을 만큼만 사용될 뿐이다.<br />
● 협력적이다<br />
<strong>PHP</strong> 컴포넌트들은 서로 잘 어울린다. 결국 이것이 <strong>PHP</strong> 컴포넌트 존재의 핵심 이유다(다른 컴포넌트들과<br />
협력해 더 큰 솔루션을 구축하는 것이 핵심이다). <strong>PHP</strong> 컴포넌트는 자신의 코드로 전역 네임스페이스를 오염<br />
시키지 않는다. 대신 자신만의 네임스페이스를 구성해 다른 컴포넌트와 이름 충돌을 피한다.<br />
● 충분한 테스트를 거쳤다<br />
<strong>PHP</strong> 컴포넌트는 충분한 테스트를 거쳤는데, 이는 작은 크기 덕분에 갖추게 된 특성이다. 작고 목적이 정확한<br />
<strong>PHP</strong> 컴포넌트는 테스트하기 아주 쉽다. 고려할 것이 적을 뿐만 아니라 목 mock 객체를 통해 의존성을 대체하<br />
기도 쉽다. 최고의 <strong>PHP</strong> 컴포넌트는 자체적으로 테스트를 제공하며 테스트한 범위도 충분하다.<br />
● 문서화 수준이 높다<br />
<strong>PHP</strong> 컴포넌트에는 유용한 문서가 제공된다. 이 문서 덕분에 개발자가 컴포넌트를 쉽게 설치하고 이해하고<br />
사용할 수 있다. <strong>PHP</strong> 컴포넌트에는 컴포넌트의 용도, 설치 방법, 사용 방법이 설명된 README 파일이 있으<br />
며, 컴포넌트 웹 사이트에서 더욱 상세한 정보를 제공하기도 한다. 소스코드 역시 수준 높은 문서화에 포함된<br />
다. 컴포넌트 클래스, 메서드, 속성에는 코드, 인수, 반환값, 발생 가능한 예외에 대해 설명하는 문서블록 docblocks<br />
이 각각 제 위치에 있어야 한다.<br />
4.3 컴포넌트 vs. 프레임워크<br />
(특히 오래된) 프레임워크의 문제는 투자비용이 많이 든다는 점이다. 프레임워크를 선택하는<br />
것은 그 프레임워크의 도구에 투자하는 것과 같다. 프레임워크는 대개 다양한 도구를 뷔페식으<br />
로 제공해준다. 하지만 가끔 프레임워크가 제공하지 않는 특수한 도구가 필요할 때 그에 알맞<br />
는 <strong>PHP</strong> 라이브러리를 찾아내고 통합하는 일은 우리의 몫이 된다. 서드파티 코드를 프레임워<br />
크에 통합하는 일도 쉽지 않다. 서드파티 코드와 <strong>PHP</strong> 프레임워크가 공통 인터페이스를 공유<br />
하지 않기 때문이다.<br />
프레임워크를 선택하는 것은 그 프레임워크의 미래에 투자하는 것과 같은데 이 투자는 프레임<br />
워크 핵심 개발팀에 대한 신뢰를 담보로 한다. 우리는 프레임워크 개발자가 지속적으로 자신의<br />
시간을 투자해 프레임워크를 개발하고, 코드를 최신 표준에 맞게 유지해줄 것으로 기대하지만<br />
4장 컴포넌트<br />
47