좋은 프로그래머란 어떤 사람일까? 여러가지를 말 할 수 있겠지만, 코드를 작성할 때 동료를 배려하는 사람에 대해서 이야기 해보고 싶다. 후배들에게 꼭 해주고 싶은 말인데, 주석이나 변수명 가지고 리뷰 코멘트 남기는 것이 너무 조심스럽고, 막상 이런 사소한 걸 편하게 말하기가 쉽지 않다. 사실은 정말 중요한 일인데...ㅠ
흔한 말로, 회사라는 곳은 혼자 할 수 없는 일을 함께 해내기 위해서 모인 조직이다. 서로에 대한 배려를 바탕으로 협업이 잘 되는 것이 가장 중요하다. 회사도 이 사실을 잘 알기 때문에 직원을 뽑을 때 커뮤니케이션 능력, 사회성 같은 것을 꼼꼼하게 확인한다. 프로그래머는 이메일 작성이나 회의를 할 때 말고도 코드를 작성할 때 커뮤니케이션 능력을 십분 발휘해야 한다. 프로그래머 간에는 코드가 이메일보다 회의보다 더 강력한 의사소통 수단이 될 수 있기 때문이다.
의미없는 단어는 사용하지 말자.
코드를 작성하다보면 temp
, i
, j
, k
, list
, buf
등의 단어를 사용하게 된다. 워낙 자주 사용되는 것이라 그것들의 의미를 추론할 수는 있지만, 읽는 사람이 추론하지 않도록 작성하는 습관을 기르는 것이 좋다. 코드 자체가 하나의 문서라고 생각한다면, 누군가가 그 문서를 읽고 오해할 만한 일을 만들지 않는 것이 중요하단걸 느낄 수 있을 것이다.
예를 정리하다 왠지 더 좋을 글이 있을 것 같아서ㅎ 찾아서 붙여놓는다
나는 i
라는 변수도 잘 사용하지 않는다. index
나 그보다 더 정확한 의미의 변수를 사용하는데, 특히 자바 스크립트의 경우 호이스팅 때문에 같은 변수를 중간에 다시 선언해서 사용하는 불안정한 코드도 많이 보아왔고, 특히 요즘은 IDE
가 좋아져서 타이핑에 예전 같은 수고가 들지 않기 때문이다. 그리고 정확한 의미의 변수를 사용하면 오히려 IDE
의 도움을 받기 더 편하다.ㅎ
주석은 필요할 때만 사용하자.
몇 해 전에 코드내에 주석의 비율이 낮은 것이 문제가 된 적이 있다. 주석이 적은 것은 코드를 보는 사람이 이해하기 힘들기 때문에 주석을 많이 넣어야 한다는 내용이었다. 그런데, 요즘 정반대의 이야기를 듣는다. 주석이 많다는 것은 그만큼 코드가 그 자체만으로 이해하기 어렵다는 것은 반증하는 것이므로 주석이 필요하다면 본인의 코드를 다시 돌아보라는 것이다. 특히 의미없는 단어들이 반복적으로 사용될 경우 주석이 필요하게 되는 경우가 많다!
잘 작성된 주석은 프로그램의 가독성을 매우 향상시킬 수 있는 반면, 잘못 작성된 주석은 프로그램의 가독성을 해칠 수 있다. 코드 컴플리트(스티브 맥코넬, 2005)
주석이 여전이 필요한 경우도 많다. 코드로 표현될 수 없는 내용들은 주석을 달아서 정보를 전달하는 것이 좋다. 테스트, 실행 환경등에 대한 내용이나 코드를 보는 동료들에게 전달이 필요한 내용은 주석으로 남겨두는 것도 나쁘지 않다. 주석이 문제가 아니라, 이해하기 힘든 코드가 문제라는 점을 명심하자!
맺으며...
사실, 코드의 가독성을 위해서 할 수 있는 일들이 더 많지만 어떤 룰처럼 적용하기 보다는 사람을 배려하는 마음을 잊지 않는 다면 자연스레 좋은 코드를 작성 할 수 있다. 진짜 좋은 코드는 읽기 좋은 소설 책처럼 그냥 스윽 읽으면 이해가 되고, 프로그래머의 의도가 자연스레 읽혀진다. 그리고 혼자만 사용하는 코드도 가독성이 중요하다. 시간이 지나고 내가 다시 그 코드를 봤을때 정말 나는 늘 다른 사람이 되어 있기 때문이다!!!ㅎ
'기술 이야기' 카테고리의 다른 글
AWS CloudFront와 S3로 Private Content 전달 방법 (0) | 2018.04.24 |
---|---|
좋은 프로그래머란?(2) - 언제나 옳은 프로그래밍을 하자 (0) | 2018.04.20 |
BLE iBeacon Eddystone packet format 분석 (3) | 2018.03.31 |
Software와 관련된 지식 조각 (2) | 2018.01.28 |
MongoDB 소소한 정리 (0) | 2018.01.03 |
Angular에 Webpack 적용 후기 & Tip (0) | 2017.12.10 |
Software Architect에 대한 단상 (0) | 2017.11.28 |
댓글