본문 바로가기

내 생각

내가 짜고 싶은 코드

 나는 어떠한 분야에 대해 알고 싶을 때, 그에 대한 정보가 전혀 없더라도 그 분야에서 유명한? 한 번쯤 읽어보았어야 할 법한 책을 먼저 산다.

그 책을 가지고 있는 것만으로도 그 분야에 발을 들인 것과 같은 기분과 더 잘 해내고 싶은 의지가 생기기 때문이다.

처음 프로그래밍에 대해서 알아보면서 산 책이 바로 이 클린 코드였는데 , 프로그래밍 코드가 어떻게 생긴지도 모르는 상태로 책을 펼쳤고 당연하게도 몇 분만에 바로 덮었다. 그렇게 책꽂이에 계속 꽂혀있다가 이제야 제대로 펼쳐보았는데 그냥 쓰여져있었던 글씨들이 이제 나에게 와닿는 조언과 격언들로 다가왔다. 당연한 말들이 쓰여져 있기도 했지만 그 당연한 것들을 생각에서 그치지 않고 행동으로 끌어내질 수 있도록 하는 것이 책을 읽는 이유 중 하나가 아닐까 싶다. 

 

 

 깨끗한 코드의 특징은 누구나 알듯이 가독성이 높은 코드, 읽기 쉬운 코드 뿐 아니라 고치기 쉬운 코드 등 여러 가지가 있지만 그 중에서도 내가 더 와닿았던 부분은 마이클 페더스가 생각한 깨끗한 코드의 정의인 누군가 주의깊게 짰다는 느낌을 주는 코드였다.

가독성 높고 술술 읽히는 우아하고 명쾌한 코드는 깨끗한 코드임이 분명하고 당연하다.

아직 코드를 많이 작성해보지 않았지만 지금까지 내가 코딩을 하면서 짜고 나서 뒤돌아봤을 때, 그 코드의 주인인 나조차도 내가 어떠한 생각으로 짰었는지 한 눈에 생각해내기 힘들었다. 그동안 실력이 뒷받침되지 않았던 것이 그 이유기도 하겠지만 내가 구현하고자 하는 기능에서 최선의 방식으로 모든 상황을, 모든 코드를 염두에 두고 주의 깊게 짜지 않았기 때문이었던 것 같다. 

빠르게 완성되어 그저 되기만 하는 코드가 아니라 세세한 사항까지 꼼꼼히 신경쓴 코드, 주의를 기울인 코드를 짜고 싶어졌다.

최근에 내가 맡은 부분이 완성되어 코드 리뷰를 받았었는데 '왜 이렇게 짜셨어요 ?'라는 질문에 바로 코드를 연결해서 설명할 수 없었던 상황이 생각났다. 깨끗한 코드를 짜야 한다는 것을 알고 있지만 막상 태스크가 주어지면 구현 사항들을 먼저 만들어내는 것에 너무 치중된 코딩을 했던 것 같다. 앞으로는 속도보다도 나중에 내 코드가 문제의 원인이 되어 효율을 떨어뜨리는 일이 생기지 않게 더욱 잘 짜여진 코드를 짜야겠다는 생각이 마구 샘솟았다.

 

간단하게 몇가지를 염두에 두고 코드를 짠다면 깨끗한 코드를 짤 수 있다고 적혀있었는데,

중복을 피해라.

한 가지 기능만 수행해라.

제대로 표현하라.

작게 추상화하라.

이 책을 간략하게 줄인 내용이라고 볼 수 있다고 한다. 책을 한번에 다 읽지는 않았지만 앞으로도 내가 코드를 잘 짜고 있나 의문이 들 때마다 생각을 행동으로 끌어내고 싶은 마음이 솟아나도록 책을 찬찬히 읽어 볼 예정이다.