변화에 최적화 됨 (Optimized for change)

smilejayden·2020년 6월 29일
0
post-thumbnail

이 글은 https://overreacted.io/optimized-for-change/ 를 번역한 글 입니다
제 번역글을 읽는 여러분들과 소통하기위해 번역 중간중간에 저의 서평 섞었습니다. 댓글 달아주시면 감사하겠습니다!!

이 포맷 안에 들어가 있는 글은 원문과는 별개의 번역자인 저의 서평 및 번역하다가 든 저의 생각입니다!

훌륭한 API를 만드는 요소는 무엇인가?

좋은 API 디자인은 기억하기 좋고 모호하지 않다(memorable and unambiguous). 이러한 특성은 가독성, 올바르고, 잘 맞는 코드를 만드는 만들게 하고, 개발자로 하여금 the pit of success에 빠지기 쉽게 한다.

필자는 위에서 말한 API 디자인의 측면을 '첫번째 우선순위' 라고 생각한다. 왜냐하면 라이브러리 개발자들이 집중을 하려는 첫번째 요소이기 때문이다. 독자는 아마 memorable and unambiguous한 코드를 포기하게 타협할 때도 있지만, 최소한 이를 염두해 두며 코드를 짜야 할 것이다.

역자 생각) 아니 그래서 memorable and unambiguous하게 API 디자인을 만들라는건가? 그렇다면 memorable and unambiguous한 API 디자인은 뭔데? 어떤게 그런 디자인인건데ㅠ

그러나 당신이 화성에 과녁을 보내지않는다면(unless you're sending rover to Mars 이거 무슨뜻이죠ㅠ), 당신의 코드는 아마 시간이 지남에 따라 변할 것이다. 그렇게 되면 당연히 당신의 API를 사용하고 있는 사람들의 코드도 변하게 될 것이다.

sending rover to Mars는 도뒈채 무슨 뜻일까..

필자가 아는 최고의 API디자이너들은 앞서 말한 가독성 등의 '첫번째 우선순위'의 측면에서 끝나지 않는다. 그들은 '두번째 우선순위'에도 끊임없는 노력에 매진한다. 그 두번째 우선순위라 함은 '이 API를 사용하고 있는 코드가 시간이 지남에 따라 어떻게 변할까?' 이다

API를 사용할 때의 요구사항을 조금만 변화시킨 것 만으로 엄청 우아하게 잘 짜여져 있는 코드를 망가뜨릴 수 있다.

훌륭한 API들은 이를 예측한다. 그들은 당신이 코드를 바꾸길 원한다는 것을 알고 있다. 당신은 복사해서 여기저기 가져가다 붙여넣고, 이름을 바꾸고, 특별케이스를 일반케이스 안으로 통합시키고, 추상화를 풀어내어 특수 케이스로 만들고, 핵을 추가하며, 병목을 최적화할 것이다. 어떤 부분은 던져버리고 새로 시작할 것이다. 실수를 만들거고, 원인과 영향을 조종 할 것이다. 버그를 고치고, 수정사항을 리뷰 할 것이다.

훌륭한 API들은 당신을 'a pit of success'에 빠지게 할 뿐 아니라 당신이 그 곳에 머물 수 있게 도와준다.

그들은 변화에 최적화 되어있다.

결론적으로 API를 제공하는 프로젝트를 할 때 그 API의 consumer들의 코드가 자꾸자꾸 변하기 때문에 그 변화에 잘 대응 할 수 있는 API디자인을 만들라는 것 같다.

오역이 있을 수 있습니다. 피드백은 언제나 거대하게 환영합니다!

profile
FrontEnd Developer

0개의 댓글