26.10.2015 Views

Modern PHP - 맛보기 PDF

조시 록하트 저 | 정병렬 역 | 한빛미디어 | 2015년 10월 | 22,000원

조시 록하트 저 | 정병렬 역 | 한빛미디어 | 2015년 10월 | 22,000원

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!