더북(TheBook)

둘째로, 모든 발명품에 대안이 있는 것은 아니다. 자신이 만든 추상화 역시 일종의 발명품이다. 클래스, 설계, 여러분이 생각한 도우미 기능 모두가 일종의 발명품이며, 생산성 향상에 도움이 된다. 우리는 새로운 것들을 발명해야 한다.

나는 항상 나를 팔로우한 사람과 내가 팔로우한 사람들에 대한 트위터 통계 보고서를 제공하는 웹 사이트를 만들고 싶었다. 문제는 트위터 API가 어떻게 작동하는지 배우고 싶지 않았다는 것이다. 이를 다루기 위한 라이브러리가 있다는 것을 알지만 이 라이브러리가 어떻게 작동하는지 배우고 싶지도 않고, 더 중요한 것은 해당 라이브러리에 구현된 것들 때문에 내 설계에 영향을 주고 싶지 않았던 것이다. 특정 라이브러리를 사용하면 해당 라이브러리의 API에 얽매이게 되며, 라이브러리를 변경하려면 모든 곳에서 코드를 다시 작성해야 한다.

이러한 문제를 다루는 방법은 새로운 것을 발명하는 것이다. 우리는 꿈의 인터페이스를 생각해 내고, 우리가 사용하는 라이브러리 앞에 추상화로 놓는다. 이러한 방식으로 특정 API 설계에 얽매이는 것을 피할 수 있다. 우리가 사용하는 라이브러리를 바꾸고 싶다면 코드의 모든 부분이 아니라 해당하는 추상화만 바꾸면 된다. 나는 아직도 트위터 웹 API가 어떻게 작동하는지 모르지만, 트위터 API에 접근할 수 있는 권한을 식별할 수 있는 무언가가 포함된 일반적인 웹 요청이라고 생각한다. 아마 트위터에서 어떤 항목을 얻어오는 작업을 할 것이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.