테크레시피

좋은 코딩을 위한 10가지 포인트는?

프로그래머가 코드를 작성할 때에는 유지 보수성 확보나 성능 극대화 등 가급적 좋은 코드를 쓰는 노력이 필요하다. 우버 엔지니어링 매니저를 역임한 찰스 악셀 다인(Charles-Axel Dein)이 좋은 코드를 쓰기 위한 중요한 10가지 포인트를 설명해 눈길을 끈다.

첫째는 좋은 코드는 혁신적이라는 것. 코드를 작성해서 해결하려는 문제가 도시간 사람 이동 등 고전적인 문제일 경우 소프트웨어나 하드웨어에 혁신 솔루션을 제공할 수 있다. 또 이미 컴퓨터가 사용되는 분야에서도 사용자가 어느 때보다 뛰어난 경험을 제공할 가능성도 있다는 것.

자신의 코드가 만들어낸 제품이 주변에서 혁신적이라고 평가되는 경우에도 항상 세계 어딘가에서 그 이상으로 혁신적인 제품을 만들어내고 있다. 따라서 소프트웨어와 하드웨어 모든 기능을 이용하면 문제를 해결할 수 있는지, 사용자에게 좋은 경험을 제공하기 위해 어떻게 해야 하는지 항상 주목하고 혁신을 계속해야 한다고 밝히고 있다.

둘째는 좋은 코드는 기능이 명확하다는 것. 코드를 작성하는 목적은 코딩 자체가 아니라 문제를 해결하고 제품을 좋은 제품으로 만드는 것이다. 좋은 제품은 단지 기능 뿐 아니라 뛰어난 기능과 함께 좋은 디자인을 갖고 사용자를 만족시킬 것이라며 따라서 코드를 작성할 때 해당 코드에 의해 만들어지는 기능이 사용자에게 명확한 디자인이 되도록 노력할 필요가 있다는 것.

셋째는 좋은 코드는 아름답다는 것. 코드를 작성할 때 다른 사람이 코드를 읽기 쉽도록 작성행 한다. 아름다운 코드 작성을 하려면 코드 스타일 일관성을 확보해야 한다. 생각을 명확하게 표현하는 구조로 써야 하는 것. 코드에 나중에 처리한다거나 수정 요망 등 댓글이 없어야 한다. 변수명이나 댓글에 일관성이 있어야 한다. 이는 코드 재사용성을 확보하기 위한 것이다.

다음은 좋은 코드는 제품 이해를 돕는다. 좋은 코드는 제품 구조를 명확하게 하고 사용자가 직관적으로 제품 기능을 파악할 수 있도록 한다. 반대로 안 좋은 코드는 제품 이해를 방해하는 요인이 된다. 코드가 제품 이해를 방해하는지 여부를 확인하는 방법으로는 코드 문서를 생성할 걸 권한다. 문서를 작성할 때 제품 기능과 코드 공백을 채굴 주석이 많이 필요한 경우 코드를 개선할 여지가 있다고 말한다.

다음은 좋은 코드가 방해되지 않는다. 코드는 목적을 달성하기 위한 도구이며 지나치게 장식되어야 한다고 말한다. 따라서 코드 추상화와 화려한 데이터 구조 사용, 복잡한 라이브러리 사용 등은 자제해야 한다고 지적한다.

다음은 좋은 코드는 거짓말을 하지 않는다는 것이다. 코드는 제품을 실제보다 혁신적이고 가치 있는 것으로 보이는 건 아니다. 실제로 설치되지 않은 기능을 사용자에게 어필하는 것도 아니다. 또 개발 기업 경영이 순조로워 팀 업무에도 여유가 있는 것처럼 보이는 경우 제품에 과도한 기능 추가를 검토하고 싶을 수 있지만 이런 기능 추가가 불필요한 건 아닌지 신중하게 판단해야 한다.

다음은 좋은 코드는 오래 간다는 것. 좋은 코드는 패션이나 디자인과 달리 무용지물이 되기보다는 오랫동안 유요하다. 하지만 대부분 라이브러리와 프레임워크는 몇 년을 유지하기 어렵다. 따라서 코드를 작성할 때에는 오래 사용되어 온 기술을 채택하고 비교 검증된 기술을 채택하는 등 신중함이 필요하다.

다음은 좋은 코드는 세세한 부분까지 철저하다는 것. 초기 사용자에게 제공하기 위해 MVP 제품을 구축할 때 제품을 자세하게 제작하지 않고 출하하는 경우도 있다. 하지만 MVP를 구축할 때 특정 유스케이스를 희생하는 건 문제가 되지 않지만 최종 제품은 모든 사례에 대응하고 유지 보수가 간단하고 수정이 용이해야 한다. 또 최종 제품에선 코드 뿐 아니라 문서나 경보 테스트 로깅, 디버깅 기능 등 세세한 부분까지 철저하게 해야 한다.

다음은 좋은 코드는 환경친화적이라는 것. 소프트웨어나 하드웨어를 작동시킬 때에는 유한 자원인 전기를 소비한다. 따라서 효율적인 데이터 구조와 알고리즘을 채택한 고효율 코드는 사용자 뿐 아니라 환경 친화적이다.

마지막은 좋은 코드는 짧다는 것. 코드는 도구이며 목적이 아니다. 소프트웨어 개발에 있어 가장 중요한 과제는 코드를 기재하는 게 아니라 문제를 해결하는 것이다. 이런 문제 해결에 집중하기 위해 코드는 가능하면 짧게 해야 한다. 또 코드가 짧은 건 일반적으로 유지 보수 필요성을 줄이고 성능이 좋아지는 걸 의미한다. 코드를 짧게 하기 위해 해결해야 할 문제를 취사선택하거나 기존 제품을 우회하라고 권한다. 관련 내용은 이곳에서 확인할 수 있다.

정용환 기자

대기업을 다니다 기술에 눈을 떠 글쟁이로 전향한 빵덕후. 새로운 기술과 스타트업을 만나는 즐거움을 독자들과 함께 나누고 싶습니다.

뉴스레터 구독