검색

가독성을 높이는 코드 작성법

『코드 작성 가이드』 이시가와 무네토시 저자 서면 인터뷰

  • 페이스북
  • 트위터
  • 복사

저 또한 읽기 쉬운 코드란 무엇인지, 개발자는 어떠한 경우에 코드를 읽기 어렵게 작성하는지, 읽기 쉬운 코드를 작성하기 위해 어떻게 해야 하는지를 고민했습니다. 이 책이 조금이나마 개발자들에게 도움이 되기를 기원합니다.(2024.05.17)


개발자라면 ‘내가 왜 이런 코드를 짠 걸까'라며 자책한 경험이 있을 것이다. 분명 복잡한 코드가 아닌데 이해하기 어렵고 조금만 변경해도 쉽게 망가지거나, 코드를 작성한 당시에는 완벽하다고 생각했지만, 몇 달 후 다시 봤는데 전혀 이해할 수 없을 때 당황스럽기도 하다. 저자 또한 비슷한 경험을 여러 번 겪었다. 그래서 읽기 쉬운 코드가 무엇인지, 읽기 쉬운 코드를 작성하기 위해서 어떻게 해야 하는지 등을 고민했고, 자신의 경험을 바탕으로 읽기 쉽고 이해하기 좋은 코드를 작성할 수 있는 원칙을 이 책에 담았다.



안녕하세요! 한국 독자들에게 간단한 자기소개 부탁드립니다.

안녕하세요, 이시카와라고 합니다. 저는 현재 커뮤니케이션 플렛폼 LINE의 모바일 앱 개발 업무를 담당하고 있어요. 그 외에도 서버 사이드를 포함한 다양한 제품들의 코드 품질을 개선하는 기술적 지원, 개발자들을 대상으로 하는 교육 관련 업무를 맡고 있습니다.

책을 출간하게 된 계기는 무엇인가요?

Github에는 이 책 『코드 작성 가이드』의 근간이 되는 슬라이드 파일이 올라가 있는데요, 사실 이것은 제 스스로가 코드 리뷰를 좀 더 편하게 하고 싶어서 만든 자료에요. 코드 리뷰를 통해 개선을 제안할 때에는 자신의 생각을 잘 정리해서 전달해야 하는데, 정리한 내용을 문서나 발표 자료 형태로 남겨두면 유사한 상황에서 다시 활용하거나 나중에 회고할 때 유용하게 사용할 수 있으니까요. 또 비슷한 문제에 직면한 다른 사람들과 지식을 공유할 수도 있죠. 처음 이 발표 자료를 만들었을 때는 단순히 나 자신과 주변 동료들을 위한 용도로만 생각했는데, 자료를 공개했더니 많은 사람들이 관심을 가지고 긍정적인 피드백을 남겨주셨어요. 그러던 중에 사내 채팅 채널에서 제가 '책으로 만들어지면 좋겠다'고 무심코 얘기했더니 도움을 주겠다고 반응 해주신 분이 계셨고, Developer Relations 부서에서 출판사를 연결해주셔서 출판을 기획하게 된 거죠.

한국어 번역판이 출간된다는 소식을 들었을 때 어떤 느낌이었나요? 그리고 번역자를 직접 추천해 주셨다고 들었는데, 그 이유는 무엇인가요?

LINE의 모바일 클라이언트 개발 조직에는 한국에서 근무하는 멤버들도 많은데 저희들은 매우 밀접한 협업 관계에 있어요. 또 저는 LINE에서 일하기 전에 구글에 있었는데, 그때도 구글의 한국 팀과 협업할 기회가 많았어요. 제 경력의 상당 기간을 한국의 개발자들과 함께한 셈이죠.

그런 의미에서 제 책의 첫 번역서가 한국어로 출간되었다는 사실은 저에겐 굉장히 특별한 의미를 가지고 있어요.

저는 이 책의 번역을 같은 팀 동료인 정기욱님께 부탁했는데, 그 이유가 꼭 그가 일본어에 능통하기 때문만은 아니었어요. 기욱님은 기술력이 뛰어난 분인데다 무엇보다 저희 팀원 모두에게 신뢰받는 사람이기 때문이었죠. 그리고 같은 팀에서 일하는 동료인 만큼 의사소통에 대해 전혀 걱정할 필요가 없다는 점도 제게 큰 안도감을 주었어요. 실제로 기욱님은 번역을 진행하시면서 기존의 표현을 한국어로 했을 때 어색함이 없는지, 한국인들에게 더 익숙한 표현으로 바꾸어도 내용의 불일치가 발생하지는 않을지 등 매우 세세한 부분까지 고려하시면서 제게 많은 질문을 주셨어요. 비록 저는 한국어를 읽을 수 없지만, 분명 이 책의 번역이 높은 완성도로 이루어졌다고 확신할 수 있어요.

『코드 작성 가이드』에서는 주로 어떤 내용을 다루고 있나요?

『코드 작성 가이드』에서는 지속 가능한 소프트웨어 개발을 가능하게 할 방법을 프로그래밍 원칙부터 코드 리뷰에 이르기까지 다양한 각도에서 소개하고 있어요. 이 책의 내용 중 특징으로 꼽을 수 있는 것은 다음 두 가지라고 생각해요.

먼저 이 책에서는 어떤 기법을 적용할 지 보다 어떻게 접근해야 할 지에 대해 초점을 두고 있어요. 단순히 기법만 익히고 그 바탕이 되는 개념을 놓치면 원칙이나 기법을 잘못 적용할 수도 있거든요. 그래서 이 책에서는 유용하게 쓸 수 있는 프로그래밍 원칙과 기법을 소개하면서도 근본적인 사고방식을 학습할 수 있도록 그 이론들을 사용하지 말아야 할 상황에 대해서도 함께 설명합니다.

또 다른 특징으로는 다른 서적들의 설명을 보완했다는 점을 꼽을 수 있을 것 같네요. 일반적으로 볼 수 있는 코드 가독성에 대한 설명은 ‘들여쓰기를 정돈하기’, '중첩을 줄이기'와 같은 작은 범주에서의 내용이거나, 반대로 아키텍처와 같은 큰 범주를 다루는 경우가 많은 것 같아요. 하지만 저는 그 사이를 연결하는 중간 부분의 설명 또한 매우 중요하다고 생각해요. 예를 들어 의존관계나 상태 설계에 대해 집필할 때에는, 독자가 이 개념을 통해 적용하려는 아키텍처가 적절한지 아닌지를 보다 수월하게 판단할 수 있도록 했어요.

이 책에서는 주로 코드의 가독성을 강조하는데, 그 외에 코드를 작성할 때 주의해야 할 점에는 어떤 것들이 있을까요?

일반적으로 코드 품질의 척도에는 가독성 외에도 유연성, 확장성, 재사용성, 성능 등 다양한 기준들이 있어요. 물론 모두 중요하지만, 때로는 이 기준들이 서로 상충되는 관계일 수도 있어요. 일부 동작의 성능을 높이려다가 되려 코드의 가독성이나 재사용성이 떨어지는 경우가 그렇죠. 이러한 기준들의 우선순위를 어떻게 정할 것인가는 매우 어려운 문제이면서도 동시에 매우 중요한 문제이기도 해요. 사람마다 우선하는 기준이 다르기 때문에 개발자들은 코드 리뷰나 대면 토론을 통해 의견을 나누면서 조율해 나가야해요. 저는 이러한 과정이야말로 개발의 큰 재미라고 생각합니다. 그런 의미에서 본다면 코드 품질에 있어 가장 중요한 것은 코드 자체의 특성보다 기술적인 토론을 즐길 수 있느냐 없느냐가 아닐까 싶어요.

저의 경우에는 ‘가독성’ 못지않게 코드의 ‘견고성’ 또한 중요하게 생각하는데요, 잘못 사용되거나 잘못 변경되기 어려운 성질을 뜻하는 ‘견고성’이 때로는 적은 코드 변경으로 더 폭넓게 사용할 수 있는 성질, 즉 ‘유연성’과 상충관계가 되기도 하죠. 저는 기능 확장을 할 때 비록 적은 양의 코드 변경이라도 그 변경에 실수가 있어서는 안 된다고 생각하기 때문에 가독성보다 견고성을 우선하는 편이에요. 특히나 대규모 제품 개발에서는 그 코드 변경이 안전하다는 보장을 할 수 있는 것이 매우 중요하거든요.

실제 업무에서 이런 코드 때문에 정말 힘들었다! 라는 사례가 있다면 간단히 소개해주세요. 그리고 어떻게 해결했는지 궁금합니다.

예전에 함수 호출의 매개변수가 300줄 이상의 익명 객체로 이루어져 있고, 중첩 깊이가 무려 15단이나 되는 코드와 마주한 적이 있었어요. 그 익명 객체 안에는 분기, 루프, 또 다른 익명 객체가 겹겹이 쌓여 있는 코드였는데, 라인 수는 그렇게 많지 않았지만, 다른 클래스들과 복잡하게 얽혀 있어 처리 흐름을 따라가는 것만으로도 정신이 아득해질 정도였어요. 저는 우선 그 코드가 무엇을 하는지 파악하기 위해 로직이 변경되지 않는 선에서 '정의 기반 프로그래밍'을 조금씩 적용해 보았죠. 그렇게 하나씩 중첩을 풀어가다 보니 차차 그 코드가 무엇을 하고 있는지 파악해 나갈 수 있었어요.

코드의 의도를 파악한 후에는 과감하게 함수 호출 순서와 분기 조건을 단순화하고, 필드가 취할 수 있는 상태를 제한하고, 클래스 간의 종속성을 정리해 나갔습니다. 꽤 힘든 작업이었지만, 점차 가독성이 좋아지는 것을 느낄 수 있었고, 마치 퍼즐을 푸는 듯한 재미도 있었어요.

마지막으로 이 책을 어떤 사람들에게 추천하고 싶으신가요?

저는 이 책을 업무, 연구, 취미를 막론하고 코딩이나 코드 리뷰를 하는 모든 개발자에게 추천하고 싶어요.

많은 개발자들은 '어떻게 구현하면 더 읽기 쉬운 코드로 구현할 수 있을까'를 고민하거나, 코드 리뷰를 할 때 '왠지 읽기가 불편한데 어떻게 리뷰를 써야 할지 모르겠다'고 생각할 때가 있을 거에요. 이럴 때 이 책을 옆에 두고 페이지를 넘기면 뭔가 힌트를 얻을 수 있을지도 모릅니다. 이 책이 많은 개발자들에게 도움이 되었으면 좋겠네요.



*이시가와 무네토시

주식회사 LINE의 LINE Platform Development 2센터, Mobile Experience 개발실의 Developer Experience 개발팀 소속이다. 시니어 소프트웨어 엔지니어로, LINE의 안드로이드 버전을 개발하고 있다. 또한, LINE의 소스 코드 가독성 향상을 위해 리팩터링과 코드 리뷰를 자체적으로 수행하며, 가독성과 관련된 개발 문화와 인프라를 구축하고 있다. 교육과 채용 프로세스 등을 개선하기도 한다.


코드 작성 가이드
코드 작성 가이드
이시가와 무네토시 저 | 정기욱 역
길벗



추천기사




이 기사가 마음에 드셨다면 아래 SNS 버튼을 눌러 추천해주세요.

독자 리뷰

(0개)

  • 독자 의견 이벤트

채널예스 독자 리뷰 혜택 안내

닫기

부분 인원 혜택 (YES포인트)
댓글왕 1 30,000원
우수 댓글상 11 10,000원
노력상 12 5,000원
 등록
더보기

글ㆍ사진 | 출판사 제공

출판사에서 제공한 자료로 작성한 기사입니다. <채널예스>에만 보내주시는 자료를 토대로 합니다.

코드 작성 가이드

<이시가와 무네토시> 저/<정기욱> 역21,600원(10% + 5%)

읽기 쉽고 이해하기 좋은 코드를 작성하려면 어떻게 해야 할까? 현직 LINE 개발자가 알려주는 가독성 높은 코드 작성법! 네이밍부터 코드 리뷰하는 방법까지! 개발자라면 ‘내가 왜 이런 코드를 짠 걸까'라며 자책한 경험이 있을 것이다. 분명 복잡한 코드가 아닌데 이해하기 어렵고 조금만 변경해도 쉽게 망가지..

  • 카트
  • 리스트
  • 바로구매
ebook
코드 작성 가이드

<이시가와 무네토시> 저/<정기욱> 역19,200원(0% + 5%)

  • 카트
  • 리스트
  • 바로구매

오늘의 책

‘가가 형사 시리즈’ 최신작

호화 별장지에서 일어난 연쇄살인. 범인이 자수하면서 해결되는 것 같지만, 범행 과정에 관한 진술을 거부한다. 진상을 밝히고자 가가 형사가 나선다. 사람들의 기억을 통해서 숨겨진 비밀을 파헤치기 시작한다. 히가시노 게이고가 선보이는 전통 미스터리 소설로 여름의 열기를 식혀 보시길.

변화의 흐름을 잡아라!

이코노미스트 홍춘욱 박사가 선정한 글로벌 경제 이슈를 담았다. 다가오는 미국 대선 이슈부터 부활하는 일본과 떠오르는 인도까지. 14가지 핵심 토픽을 정리해 세계 변화의 흐름을 한눈에 바라본다. 급변하는 세계의 변곡점에서 현명하게 대응하고 부의 기회를 만들어보자.

삶에 역사의 지혜를 들여오다

선택에 후회를 남기고 싶지 않을 때 우리에겐 역사가 필요하다 더 깊어진 통찰과 풍부해진 경험으로 돌아온 최태성 저자의 신간. 역사를 배워야 하는 이유를 넘어 삶에 역사의 지혜를 들여오는 방법을 다룬다. 역사에서 찾은 시간이 지나도 변하지 않는 단단한 가치는 여전히 역사의 쓸모를 증명한다.

성적이 오르는 아이의 비밀은 어휘력!

초등어휘일력으로 많은 사랑을 받았던 30만 학부모 멘토 이은경쌤이 엄선한 10대가 꼭 알아야 할 국어 교과서 문학,비문학 속 필수 어휘! 교과서 속 처음 접하는 '낯설고 생경한 어휘' 때문에 공부가 어려운 아이들에게 공부의 기본기가 되어 줄 어휘력! 하루 10분, 하루 1장 씩 자연스럽게 익혀 보자!


문화지원프로젝트
PYCHYESWEB02