brunch

You can make anything
by writing

C.S.Lewis

by GMIND May 17. 2022

클린 코드


 프로그램 개발, 코딩, 프로그래밍은 혼자서 하는 행위가 아니다. 적어도 당신이 빌 게이츠급 천재가 아니라면 말이다. 세상의 서비스를 제공하기 위해 의미 있는 수준의 코드가 작성되기까지, 나의 코드는 타인의 손을 탈 것이고, 나 또한 타인의 코드를 검토하고 수정하고 있을 것이다. 코드라는 것은 컴파일러가 인식하기 편한 형태의 새로운 언어임과 동시에, 프로그래머들이 서로 소통하기 위해 엄격히 약속된 공용어이다. 그러므로 우리는 누군가가 나의 코드를 살펴볼 것임을 감안하며 코드를 작성해야 한다. 이것이 개발자들 사이에서 클린코드가 중요한 이유이다.


 코딩을 처음 접한 자들이여, 직접 작성한 코드가 수학 계산을 해내고, 데이터를 가공해내고, 어플리케이션을 동작시키는 것을 보면, 어렵게만 생각했던 코딩이 쉽게 풀려서 기분이 좋을 것이다. 적어도 그 코드를 본인이 혼자 안고 갈 것이면, 이만하면 충분하다. 하지만 단 두 명이어도 다른 사람이 내 코드를 보고 작업해야 할 순간이 온다면, 지금까지 적은 코드가 남한테 보여줄 만한 지 한 번 다시 생각해 볼 필요가 있다. 코딩은 일기장이 아니다.


 애니악이 등장하고 프로그래머라는 직업이 처음 등장할 때는, 최대한 어떻게 코드를 가볍게 짤지에 대해 연구하는 것이 주류였다. 단 하나의 명령 사이클을 줄이기 위해 온갖 방법을 동원하였다. 함수 하나 덜 실행하는 것이 퍼포먼스에 의미 있는 차이를 가져왔기 때문이다. 하지만 컴퓨터 속도가 비약적으로 향상된 지금, 함수 하나를 더 추가함으로써 내 코드가 더 보기 편해진다면 충분히 그러는 것이 좋다.


 그리고 하나의 함수는 최대한 간단할수록 좋다. 가령 어플리케이션을 개발할 때, 버튼 클릭 함수 하나가 버튼 디자인을 변경하고, 버튼에 연결된 데이터를 변경하고, 버튼에 연결된 데이터를 통해 디자인을 업데이트하는 등 여러 가지 기능을 한다면, 다른 사람들이 보기에는 매우, 매우 복잡할 수 있다.


 함수는 한 가지 일만 하는 것이 좋다. 기능 하나하나를 함수로 독립시킨다면, 코드는 더욱 간결해질 것이다. 가령 위의 예시에서, 버튼 디자인 변경 함수, 데이터 변경 함수, 데이터를 화면에 업데이트하는 함수를 각각 만들어서, 버튼 클릭 함수가 위의 함수 3개를 부르게 한다면, 버튼 클릭 함수는 더욱 직관적으로 변할 것이다.


 하나의 함수는 하나의 기능만 하면 된다는 원칙은 객체지향 프로그래밍에서 객체를 설계할 때도 비슷하게 작용할 수 있다. 하나의 객체는 크게 하나의 일을 하는 것이 좋다. 예를 들어, 어플리케이션의 모든 기능을 하나의 객체가 담당한다면, 하나의 객체가 상당히 무거워지고 개발 편의성이 저하될 것이다. 


 일반적으로, 어플레이케이션의 객체를 가볍고 보기 편하게 하기 위해서, 어플리케이션 메인 객체와 화면별 객체로 분류하여 사용한다. 객체를 분리하면 코드 가독성이 증가하고, 이는 코드 수정의 범위를 빠르게 파악할 수 있어 더욱더 편리한 유지보수가 가능하다. 궁극적으로, 코드의 재사용이 매우 편리해진다.



Artist 'KimJinnyeong' with Gallery MIND

작가의 이전글 Flutter와 SwiftUi 2
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari