본문 바로가기
OOP

[OOP] 좋은 코드

by ifhead 2022. 9. 2.
반응형

당신이 생각하는 좋은 코드는?


당신이 어떤 종류의 코드를 작성하는 사람인지 알지 못하지만 한 가지는 확신할 수 있습니다. 당신은 코드를 통해 어떠한 대상과 소통하고 있습니다. 코드는 하드웨어, 소프트웨어, 때로는 다른 프로그래머와 대화하기 위해서 작성됩니다. 당신이 나열한 글자들은 질서를 가지고 의미를 만들어 냅니다. 저는 이 글자들이 일하는 방식에 관심이 많습니다. 자연스럽게 더 좋은 방식을 찾는 일에도 흥미를 가지게 되었습니다. 좋은 코드가 무엇인지에 대한 견해를 정리해보고자 이 글을 씁니다.

프로그래밍을 더 친숙하게 바라봅시다. 웹, 게임, 임베디드와 같은 세세한 구분을 걷어내면 프로그래밍은 결국 무엇입니까? 프로그래머가 실제로 하는 일은 글자를 타이핑하는 일입니다. 우리는 글을 쓰는 사람들입니다. 글로써 가치를 창출해내고, 글로써 세상을 구성하는 크고 작은 요소를 움직입니다. 당신이 적은 글자들은 바쁘게 일합니다. 반도체 소자부터 마이크로 프로세서, 컴퓨터, 애플리케이션, 클라우드 시스템까지, 그 모든 엔티티들이 당신이 부여한 의미에 귀를 기울입니다. 저는 이게 꽤나 근사한 일인 것 같습니다.

 

코드와 글은 많은 부분에서 닮았다


코드와 글은 많은 부분에서 닮아 있습니다. 탄생하는 순간부터, 가치를 만들어내는 순간까지 비슷한 생애 주기를 거칩니다. 좋은 글을 알면 좋은 코드를 알 수 있습니다. 아주 기본적인 수준에서 생각해볼 때 좋은 글이 무엇인지는 명확합니다. 좋은 글은 최소한 이해는 가능해야 하고, 인지적으로 읽기 편하게 구성되며, 개인 혹은 사회에 긍정적인 영향력을 행사합니다. 그런 글이 좋은 글이라는 데에 당신이 선뜻 동의할 수 없다 하더라도, 정반대의 글보다는 낫다는 데 동의할 수 있을 것입니다. 좋은 코드와 좋은 글은 근본적으로 다르지 않습니다. 인류가 언어를 발명하고, 활자를 만들고, 그것을 인쇄하기에 이르고 한참이 지나서야 탄생할 수 있었던 도구가 코드입니다. 글과 코드는 뿌리가 같습니다.

코드가 그렇듯 모든 글은 작성자를 필요로 합니다. 그 대상인 독자도 존재합니다. 코드에 다른 점이 있다면, 독자-작성자의 관계가 일반적인 글보다 역동적이라는 점입니다. 코드는 하드웨어, 소프트웨어, 유저, 프로그래머에게 영향을 미칩니다. 일상적인 글과 마찬가지로 코드는 누군가를 기분 좋게 만들 수도 있고, 썩 불쾌한 하루를 보내게 할 수도 있습니다. 사람들은 자기가 읽고 있는 글에서 저속한 언어와 그것의 무질서한 배열을 발견할 때 정신적 피로감을 느낍니다. 코드도 그만의 예법이 있을 것입니다. 예법을 무시하기 시작하면 코드는 급격하게 불량해집니다. 당신은 다른 사람을 정신적으로 괴롭히고 싶나요? 가끔이야 재미있겠지만(Brainfuck, 엄Lang) 항상 그러고 싶은 것만은 아니라면, 한번쯤 좋은 글이란 무엇인지에 대해서 생각해 보시길 권합니다.

 

소통


코드는 규칙에 민감합니다. 프로그래밍 언어는 0과 1이 모여 형성되는 논리단위에 명칭을 붙여가며 만들어졌습니다. '추상화'라는 통로를 거쳐 만들어진 언어다보니 일상적으로 사용하는 언어에 비해 함축적입니다. 프로그래밍 언어는 태생적으로 모든 인간에게 있어서 제 n 외국어입니다. 그리고 프로그래머들이란 그 낯선 외국어로 소통해야만 하는 사람들입니다. 소통의 대상은 컴퓨터일수도, 혹은 다른 프로그래머일수도 있습니다. 낯선 언어일수록 올바르게 소통하고자 한다면 서로를 배려하면서 이해하기 쉽게 대화해야 합니다. 우리는 0과 1로 대화할 수 없었기에, 노력을 기울여 프로그래밍 언어를 탄생시켰습니다. 프로그래밍 언어가 필요했던 이유 자체가 소통에 있습니다. 그렇다면 우리의 코드는 팀원들과 잘 소통할 수 있도록 도와주는 글이 되어야 하지 않을까요?

그럼 각자의 자리에서 즐코하고 계시길 바라고, 이만 코딩하러 가보겠습니다 :D

 

반응형

댓글