코드를 작성할때 간결함이란 그저 짧게만 작성한 코드를 의미하지 않는다. 꼭 필요한 코드를 충분히 잘 작성하여 목적에 맞는 기능이 동작해야 한다. 코드 작성 시의 간결함은 그저 잘 동작하는 코드만을 작성하는 것을 의미하지는 않는다. 불필요한 코드 작성을 제거하여 목적지가 분명한 방향성을 포함한다.
간결한 코드는 경험에서 나온다.
가볍고 간결한 코드는 정확한 이해 없이 그저 짧게 작성한 코드를 의미한다. 깊이있고 간결한 코드는 관련 지식을 바탕으로 간단명료하게 작성된 코드를 의미한다. 간결한 코드를 잘 작성하기 위해 코드를 깊숙이 파고들어가 분석하고 이해해야 한다. 그러고 나면 코드의 깊이 있는 관점을 바탕으로 코드를 간단 명료하게 설명할 수 있게 된다. 코드의 핵심을 명확하게 볼 수 있게 될 때 간결해지게 된다. 간결한 코드는 개발자가 어떻게 공부하고 익혀왔는지를 보여준다.
간결한 코드는 코드 저변에 깔려 있는 원리를 연구한 뒤에 작성할 수 있다. 깊은 경험에서 우러러 나오는 개발자의 시각이자 관점이다. 코드의 본질을 파악해야 한다. 간결한 코드를 작성하기 위해서는 코드 분석과 이해에 많은 시간을 들여야 한다.
간결한 코드는 압축적이다
간결한 코드의 황금률은 없다. 그래서 단어 개수를 세기에 집착할 필요는 없다. 간결한 코드는 압축적으로 표현하는 것이다. 어떻게 하면 적은 코드로 로직을 표현할 수 있을지 생각해 보자.
복잡한 개발 환경
개발 환경은 점점더 복잡해 지고 개발자 들은 그러한 환경에서 시달리며 일한다. 간단명료하게 코드를 작성하고 빨리 개발을 끝내야 한다. 그 순간 개발자의 삶은 한결 수월해지고 개발자와 협업하는 기획자나 다른 동료 개발자도 고마워할 것이다. 코드가 넘쳐나고 있고 어디에나 무수한 코드들이 존재한다. 하루가 다르게 최신 기술들이 쏟아져 들어오고, 이메일이며 뉴스등을 확인하며 지낸다. 아침 식사를 하면서도 페이스북에 밀려 드는 기사를 읽고 출근하면서도 새로운 기술들을 읽는다. 휴일에 휴식을 취하면서도 메일로는 깃헙의 알람이 오거나, 소셜 네트워크 그룹의 메시지가 휴식을 방해한다. 더 많은 기술 유튜브 영상 정보들과 더 많은 오픈소스 코드들이 날마다 새로 생겨 나고 있다. 아직 시도하지 않는 기술들도 밀려 들고 있다. 직장에 가면 많은 회의와 전화, 메일들로 인해서 개발을 할 여력이 사라지고 있다.
습관적으로 간결한 코드 작성하기
요즘 소프트웨어 개발 과정은 예전처럼 여유롭지 않다. 바쁜 비즈니스 환경과 마주해야 하고 보다 문제 핵심에 도달하고 비즈니스의 문제들을 빠르게 해결해야한다. 이런 상황일수록 간결한 코드 작성 능력이 요구된다. 간결한 코드를 작성하려면 습관적으로 어떻게 바꾸어 갈지에 대한 구체적인 계획과 훈련이 필요하다. 습관적으로 간결한 코드를 작성하기 위한 방법으로 세가지 정도를 고려해 볼 수 있다.
코드를 시각화
하라코드 리뷰를 진행
하라코드를 공유
하라
먼저 코드를 시각화
하는 방법이다. 파워포인트를 이용해 UML(Unified Modeling Language)을 작성한다. UML은 의미 그대로 통합 모델링 언어이다. 코드 뿐 아니라, 서버, 그리고 전체 서비스를 이루는 구성 요소들의 관계를 시각화 하는데 사용할 수 있다. UML을 통해 코드를 시각화 하면 구조화가 가능하다. 구조화를 하면 코드의 흐름 파악이 용이하고, 구조적인 관점, 아키텍처 적인 관점에서 코드를 간소화할 수 있는 방법을 찾을 수 있다.
다음으로 코드 리뷰
를 진행하는 것이다. 코드 리뷰는 내가 작성한 코드나 또는 오픈된 코드를 가지고 코드가 어떻게 작성되었는지를 설명하는 방법이다. 동료들과 함께 페어 코드 리뷰
를 진행할 수 있고 혼자서 셀프 코드 리뷰
진행할 수 있다. 코드가 작성된 배경이나 목적을 생각하며 현재 코드의 기능을 이해하고, 코드가 어떤 관점에서 작성되었는지를 말로 설명하는 것이다. 코드를 말로 설명하는 과정에서 어려운 코드, 중복 코드를 발견 된다. 코드 리뷰간에 체크 포인트들은 코드리뷰 이후에 리팩터링 하면서 간결한 코드로 변경할 수 있게 된다. 적절한 형식을 갖추어 진행하면 간결한 코드 작성에 도움을 받을 수 있다.
마지막으로 코드를 공유
하자. 코드 공유하여 불필요한 코드가 없는지, 가독성이 좋은지를 계속 점검할 수 있다. 코드 공유라는 행위는 메타인지
를 발달 시킨다. 코드를 공유 하면 제 3자의 관점에서 자신의 코드를 볼 수 있게된다. 제 3자의 관점에서 자신의 코드를 보면 간결한 코드인지 아닌지를 보다 잘 알 수 있다. 다른 사람을 의식하는 과정에서 가독성을 유지하면서 간결한 코드를 작성할 수 있게 된다.