본문 바로가기

IT

매력적인(흥미로운) 코드 (1)

매력적인 코드란?

주석을 보지 않더라도 읽기 쉬우면서, 읽으면서도 코드 내용에 흥미가 가도록 만들어져 있는 코드가 매력적인 코드라고 생각한다.

 

주석을 보지 않더라도 읽기 쉬운 코드가 중요하다는 것은 오랫동안 강조되어 왔다. 그러나 많은 사람들이 이번에 이야기하는 흥미로운 코드에 대해서는 잘 들어보지 않은 이야기일 수도 있다.

흥미로운 코드

흥미로운 코드는 어떤 것일까? 일단, 무슨 생각으로 이런 코드를 짰는지 궁금하게 만드는 코드는 제외한다.

반복적이지 않은 코드

어떤 파일이 엄청난 Getter와 Setter로 가득차 있었다고 한다고 먼저 가정을 하겠다. 이코드가 분명 지정된 양식에 맞춰서, 은닉화도 잘 되어있는 코드라면, 좋은 코드라고 할 수 있을 것이다. 그러나, 무의미한 getter와 setter로 가득차버린 코드를 보는 사람은 그만 정신이 아찔해져버릴 것이 분명하다.

 

무엇이 이 좋은 코드를 보는 사람으로 하여금 정신이 아찔하게 만드는 코드로 만들었을까?

 

당연히도, 반복되는 코드는 지루하기 때문이다. 그리고 Getter와 Setter가 무의미하다는 것을 알고 있기 때문이다. (프로그래밍적이 아니라, 사람에게 있어서의 무의미이다) 물론 반복적인 코드가 가독성에 도움이 될 수 있다. 그러나, 개인적으로는 한 화면을 다 채울 수 있을 정도의 반복 되는 코드는 확실히 흥미로움이 떨어지는 코드라고 말할 수 있다.

 

아주 좋은 예시로, case문이 많은 스위치문을 들 수 있디. 스위치문은 그 간결성(+성능)은 매우 높지만,  반대로 반복된 구문으로 인해 흥미를 잃기 쉬운 코드다.

접고 싶지 않은 코드

대부분의 IDE를 비롯해 코드 편집기에는 코드 블럭을 접을 수 있는 기능이 포함되어있다. 어떤 파일에서 해당 기능을 많이써야하는 일이 생긴다면, 높은 확률로 그 파일은 별로 열어보고 싶지 않은 코드임을 확실 할 수 있다. 접어 두었다는 것 자체가, 그다지 신경쓰고 싶지 않은 코드일 가능성(예: Getter 등)이 높기 때문이다. 그리고, 한 파일에 너무 많은 코드가 담아져 있는 케이스 일 것이다. 1만줄이나 되는 파일은, 아무리 훌륭한 코드라도 열어보는데 있어서 마음의 준비가 필요할 것이다. 이러한 마음의 준비를 하지 않고서도, 어렵지 않게 있을 수 있는 코드가 되어야한다.

복잡하지 않은 코드 (함수)

함수가 비대해지면 읽기도 전에 지쳐버린다. 특히 복잡한 코드는 흥미를 떠나서, 읽는 것도 어렵게 만든다. 복잡한 코드는 매력적이라고 할 수 없다. 

복잡한 코드를 사전에 방지할 수 있는 방법과 관련해서는 순환 복잡도(Cyclomatic Complexity) 편에서 자세하게 추가적으로 이야기할 예정이다.

 

그러나 현실은…

언제나 그렇듯이, 필자도 이러한 코드 품질에 대한 글이나 이야기를 듣게되면, '아! 이제 나도 예쁘게 코드를 짜야지'라는 생각이 머릿속을 매워버린다. 그러나 정작 짜여지는 코드들은, 매력적이지도 않으면서, 읽기 쉽지도 않은, '예쁘지 않은 코드' 이었다. 

 

방금 저 문단에 이입이 안된다면 훌륭한 (갓) 개발자라는 뜻이니 안심해도 좋다.

 

글에 대한 오류 지적을 비롯한 어떠한 피드백에 대해서도 모두 감사히 받고 있습니다.
반응형