코딩 하는 가든

[생각 정리] 좋은 코드란 본문

주저리주저리

[생각 정리] 좋은 코드란

가든리 2020. 4. 22. 23:47

좋은 코드란 무엇인가

 멋쟁이 사자처럼을 하던 시절 우연히 만난 대장 이두희 님이 이런 말을 한 적이 있다.

 

'좋은 코드란 무엇일까요? 좋은 코드란 실제로 유저들이 사용하는 코드라고 생각해요. 학교 과제로 아무리 잘 짠 알고리즘과 자료구조 코드도 사용하는 유저들이 없다면 쓸모없지 않을까요?'

 

사실 맞는 말이다. 아무리 잘 짠 코드여도 세상에서 쓰이지 않는 코드라면 무슨 가치가 있겠는가? 하지만 그 당시 느끼기로는 두희님은 이 말을 어떠한 '서비스' 에 초점을 두고 한 말이었다고 생각한다. 하지만 꼭 서비스화 되어 실제 유저들에게 사용되지 않더라도 가치 있는 코드는 충분히 많다. 어떤 코드는 지식을 전수하기 위해 교육을 목적으로 작성되었을 것이다. 또 어떤 코드는 인류 기술의 진보를 위한 연구의 목적으로 작성되고 있을 것이다. 그렇기에 나는 이두희 님의 실제로 유저들이 사용하는 코드라는 대목에서 '그렇다면 내 코드의 사용자는 누구인가?'  라는 생각을 해보게 되었다. 

 

 내 코드의 사용자는 내가 만든 서비스의 유저뿐만 아니라 내 코드를 보고 사용하는 모든 이 라고 생각한다. 이는 함께 일하는 동료 개발자는 물론, 깃 허브 등에 올려둔 오픈 소스를 열람하는 모든 사람들이 포함될 것이다.

 

 본인은 현재 백엔드 인턴 업무를 하고 있으며 선임 개발자에게 코드 리뷰를 받으며 개발을 진행중이다. 나름 클린 한 코드를 작성한다고 생각해왔지만 업무 초기 코드 리뷰를 거치며 많이 부족하다는 생각이 들었고 내가 코드 리뷰를 진행하며 느낀 좋은 코드는 남이 볼 때도 내가 짠 코드마냥 술술(까진 아니어도) 잘 읽을 수 있는 코드여야 한다는 것이다. 이 부분은 현재 함께 일하는 동료 개발자 뿐 아니라 추후 내가 짠 코드를 유지 보수 할 다음 개발자를 위해서도 굉장히 중요한 부분인 것 같다.(이전 코드를 잘 알아볼 수 없어서 실제로 다시 짜는 모습을 보았기 때문에...) 실제로 잘 짠 코드를 보면 별 다른 질의를 할 필요 없이 코드 그 자체만으로 의사소통이 되는 느낌이 든다. 아 물론 엣지케이스가 없는 빈틈없는 로직은 기본 덕목 일 것이다.

 

 오픈 소스의 경우 회사 업무와는 다르게 소통할 수 있는 방법이 텍스트로 밖에 없을 텐데 아무래도 대면으로 하는 의사소통 보다는 원활하지 않을 것이다. 이런 때에 의사소통을 최소한으로 줄일 수 있는, 코드만으로도 이해가 잘 가는 코드가 필요할 것이다.

 

 물론 내 코드의 사용자는 프론트 개발자도 포함이다. API를 요청하여 응답을 받아야 하는 클라이언트도 약속된 규칙 안에서 보기 좋은 구조로 응답을 받아야 할 것이다.

 

 매우 두루뭉술 하지만 정리를 해 보자면 내가 생각하는 좋은 코드란 코드 그 자체로도 의사소통이 되는 가독성이 좋은 코드를 의미하는데, 이는 뭐 사실 생각해 볼 것도 없이 당연한 이치들이다. 하지만 머리로만 생각하고 있던 것보다 처음으로 업무를 하며 직접 몸으로 부딪히며 체감했던 이 순간의 생각을 기록해 보고 싶어서 이 글을 작성하게 되었다.