클린 코드란 무엇일까요?
코드에 정답은 없습니다.
이 글에서는 제가 생각하는 클린 코드의 정의를 전달하고자 합니다.
먼저 구글에 클린코드의 정의를 검색하면 다음과 같습니다.
클린 코드(Clean Code)는 소프트웨어 개발에서 사용되는 개념으로, 읽기 쉽고 이해하기 쉬운 코드를 작성하는 것을 강조합니다. 클린 코드는 프로그램의 동작을 보장하는 것뿐만 아니라, 코드 자체가 가독성이 뛰어나고 유지 보수가 쉽도록 작성되어야 한다는 원칙에 기반합니다.
프로그래밍하다보면 가독성이 떨어지지만 성능이 뛰어난 코드 혹은 성능은 평범하지만 가독성은 뛰어난 코드 둘 중 하나를 고민하게 되는 순간이 찾아오죠. 대부분은 성능 좋은 코드를 선택하게 됩니다
위 상황처럼 양자택일의 상태에 놓인다면 어떤게 더 좋은 코드일까요?
두 코드간의 우열을 가릴 수 있을까요??
클린 코드라는건 어떻게 판단하지?
우리는 비교를 하기위해서는 반드시 비교 대상이 필요합니다. 그리고 비교에는 절대적인 기준이 존재하죠.
클린 코드를 판별할 수 있는 절대적인 기준은 뭘까요?? 완벽한 100점짜리 코드가 기준이 될까요??
하지만 완벽한 코드란 세상에 존재할 수 없죠.
그렇다면 우리는 어떤 비교 대상을 가지고 비교한 후에 "이건 클린 코드야" 라고 말하는 걸까요?
먼저 클린 코드라고 할 수 있는 디자인 패턴을 알아보죠.
디자인 패턴이란 무엇일까요?
우리는 저마다 클린 코드라는 정의를 가슴속에 하나씩은 가지고 있죠.
"이 문제를 해결할 때는 이 방식이 최고야" 라면서요.
실제로도 "그 방식"은 문제를 해결할 때 꽤 괜찮은 방식일겁니다.
왜냐하면 같은 문제를 여러 방식으로 시도하다 "꽤 괜찮은 방식"을 찾고나서 할 수 있는 말이기 때문입니다.
수많은 오답 코드를 작성하다 결국에는 "꽤 괜찮은 방식"을 찾게 된거죠.
실제로 디자인 패턴은 개발자가 자주 마주하게 되는 문제에 대한 정답지같은 겁니다.
"이 문제를 해결할 때는 싱글턴 패턴이 최고야" 라면서요.
적절한 상황에 적용했다면 실제로 해당 패턴을 사용하는게 좋은 선택이 되겠죠.
디자인 패턴도 그저 "꽤 괜찮은 방식"일 뿐입니다. 어쩌면 더 나은 방법이 있을지도 모르죠. 알고계시면 공유좀
하지만 저를 비롯한 많은 프로그래머들이 더 나은 방법을 찾지 못했습니다.
제가 생각하는 클린 코드란 바로 오답이 아닌 코드입니다.
물론 디자인 패턴처럼 어느정도 정답이 존재하는 문제도 존재합니다.
하지만 실제로 프로그래밍을 하다보면 문제에는 정답이 존재하지 않는 경우가 훨씬 많습니다.
프로그래머가 문제를 스스로 해결해야 하는 경우가 훨씬 더 많죠.
그리고 이런 처음 풀어보는 문제를 마주하면 결국 헤맬수밖에 없습니다.
처음 설계할 때와 다르게 문제점이 보여서 구조를 새로 갈아엎은 적도 있을겁니다. 그냥 땜빵 코드를 작성할 때도 있겟죠.
하지만 계속해서 비슷한 문제를 마주하다보면 "저번에는 이런 문제가 있었으니 이번엔 다르게 풀어보자" 라면서 계속해서 새로운 방식을 시도하게 됩니다. 그러다보면 디자인 패턴처럼 오답이 아닌 코드를 작성하게 되죠.
물론 이렇게 작성된 코드가 최고의 풀이였냐라고 물어본다면 그렇다고는 할수 없겟죠.
하지만 저는 그래도 "오답이 아닌 코드는 클린코드"다 라고 말할 수 있습니다.
추천 포스트
[Typescript vs Javascript] 타입스크립트의 종말
저는 언젠가 타입스크립트가 대체될 것이라고 생각합니다. 타입스크립트는 자바스크립트의 단점을 보완하여 만들어진 언어입니다. 자바스크립트와 타입스크립트의 가장 핵심적인 차이는 type
aierse.tistory.com
리액트 폴더 구조 설계 5단계
출처 React Folder Structure in 5 Steps 대규모 리액트 어플리케이션의 폴더 및 파일 구조를 어떻게 설계하는가는 핫한 주제 중 하나입니다. 사람들이 소규모부터 대규모 프로젝트에 이르기까지, 저에게
aierse.tistory.com
'프로그래밍' 카테고리의 다른 글
[프로그래밍] 깃허브 위키를 아시나요?? (0) | 2024.04.15 |
---|---|
[Typescript vs Javascript] 타입스크립트의 종말 (1) | 2024.04.11 |
[프로그래밍] 2024년에 새롭게 추가되는 자바스크립트 신규 기능 (0) | 2024.04.11 |