본문 바로가기
프로그래밍

좋은 코드란 뭘까? 이해하기 좋은 코드 만들기

by LiveData 2024. 3. 23.
반응형

 

오늘은 좋은 코드가 뭘까에 대해 고민해보고 저의 의견을 적어보려고 합니다.

여러분에게 좋은 코드란 어떤건가요?

 

각자 좋은 코드의 관점이 다르고 정답이 없는 문제 입니다.

 

그렇기 때문에 제가 내용을 보고 잠깐 생각해보고 각자 생각하는 관점에 따라 좋은 코드의 기준을 만들어가면 좋을 것 같습니다.

 

 

 

 

 좋은 코드란?

 

1. 직관적 일수록 좋다 생각합니다.

저의 생각은 직관적인 코드가 좋은 코드라고 생각합니다. 직관적인 코드는 이해하기 쉽고, 유지보수하기 편하며, 협업하는 동료들도 쉽게 이해할 수 있는 코드입니다.

 

더불어, 직관적인 코드는 코드를 모르는 사람이 와도 완전히 이해할 수는 없지만 '이해의 뼈대'를 파악할 수 있을 정도로 자연스럽게 느껴지는 것이 중요합니다.

 

하지만 '직관적'이란 표현은 상당히 모호합니다. 따라서 저는 코드가 함께 작업하거나 유지보수하는 사람에게 마치 책을 읽는 것처럼 자연스럽게 이해될 수 있다면 그것이 좋은 코드라고 생각합니다.

 

하지만 이러한 기준 또한 주관적이며 절대적인 정답이 없습니다. 코드의 품질은 프로젝트의 상황과 다양한 요소를 고려하여 결정되어야 합니다.

 

그러므로 코드를 작성할 때는 항상 '왜'라는 이유를 고민해야 한다고 생각합니다. 코드가 어떤 문제를 해결하고 있는지, 어떤 목표를 달성하기 위해 작성되었는지를 명확히 이해하고 작성하는 것이 중요합니다.

 

 

 

 

 

2. 꼭 복잡한 코드가 좋은 코드는 아니다

복잡한 코드가 반드시 좋은 코드인 것은 아닙니다.

 

예를 들어, 중복된 코드를 모두 처리하기 위해 하나의 함수를 만들었다고 가정해봅시다. 이것이 좋은 코드라고 할 수 있을까요?

 

실제로는 이러한 접근은 유지보수성을 낮출 수 있습니다. 함수의 파라미터가 많아지고, 함수 내부에서 호출되는 다른 함수들의 해석이 어려워지면서 코드의 복잡성이 증가할 수 있습니다.

 

이러한 복잡한 함수가 반드시 필요한 경우에는 팀 내 의사 소통과 합의를 통해 개발해야 합니다. 특히 한국에서는 의사 소통이 쉽지 않은 경우가 많아 이 부분이 더욱 중요합니다.

 

한가지 중복에 대한 예로, 중복이 발생했을 때 이것이 정말 중복인지를 확인하고 팀 내 의견을 조율하는 것이 좋습니다.

 

하지만, 현실적으로는 시간이 부족한 경우가 많습니다. 이런 고민을 하기 어려울 수 있습니다.

 

따라서 일단 중복을 용인하고, 중복이 4번 이상 발생한다면 여유가 생길 때 중복을 제거하는 작업을 하는 것이 좋습니다.

 

 

 

 

 

3. 단단한 코드 만들기 가이드

글을 쓸때도 서론 본론 결론이 있고 가이드가 있는 것처럼 코드에도 단단한 코드 만들기에 대한 가이드가 있습니다

 


1. 들여쓰기 최소화와 함께 코드를 간결하게 작성하는 것이 중요합니다. 예를 들어, if 문을 줄이는 등의 방법을 활용하여 가독성을 높이고 코드의 복잡성을 낮출 수 있습니다.

 

2. 리턴문을 가능한 한 빨리 작성하여 코드를 처음부터 빠르게 읽을 수 있도록 해야 합니다.

 

3. 불변의 변수를 사용하여 코드를 작성하는 것도 좋은 습관입니다. 변하는 변수를 사용할수록 코드를 추적해야 할 부분이 늘어나기 때문입니다.

 

4. null을 피하고 옵셔널을 활용하여 안전한 코드를 작성해야 합니다.

 

5. 타입이 있는 변수를 사용하여 컴파일 타임에 문제를 미리 잡을 수 있습니다. 이는 코드의 안정성을 높이고 유지보수를 쉽게 만듭니다.

 

6. 코드의 확장성과 유지보수성을 고려하여 역할별로 컴포넌트를 나누어 생각하고 일관된 구조를 유지하는 것이 중요합니다.


 

단단한 코드는 더 많지만 자신만의 방법을 하나하나 쌓아올린다면 좋을 것 같습니다

 

하지만 한가지 알아두셔야 할 점은 위 가이드를 포함하여  DDD, OOP, 클린코드 등등 여러 법칙이 절대적인 법칙이 아니라는 것 입니다. 

 

시간적,프로젝트 성격 등등 여러 요소를 고려하여 위 법칙을 반영해야합니다

 

 

 

이상 좋은 코드에 대한 고민을 읽어주셔서 감사합니다

 

 

 

반응형