공감이 간 아티클

가독성 좋은 코드와 코드 품질에 대하여(Toss의 모닥불)

아티끌모아태산 2024. 6. 20. 14:14

https://www.youtube.com/watch?v=1Vn8et-MdaI

 

 

간단한 요약을 하자면,  코드 퀄리티는 챙겨야 하냐는 화두로 시작하여 아래와 같은 내용을 언급해주신다.

1. 가독성 좋은 코드란 무엇인가?
2. 어떻게 하면 그런 능력을 기를 수 있을까?
3. 리팩토링은 언제 하면 좋을까? 

각각의 화두에 대한 생각

코드 퀄리티와 가독성 좋은 코드는 왜 작성해야하는가?

우선 코드 퀄리티는 왜 챙겨야 하는가에 대해서,  진우님께서 말해주신 내용이 제일 와닿았다.  물론 비즈니스로직에 닿는 것도 중요하지만 왜 코드 퀄리티가 중요할까..?
가독성 좋은 코드란 동료를 위한 것이다.

흔히들 웹개발의 역사에 대해서 배우면, 동적인 앱이 증가하면서 단순한 웹페이지에서 웹 앱으로 발전하게 되었고, 그러면서 협업이 중요해졌다. 당연히 협업을 하기 때문에, 동료와 공유할 수 있는 코드의 중요성도 높아질 수 밖에 없다.. 그렇기 때문에 우리는 가독성 좋은 코드, 좋은 퀄리티의 코드를 써야한다..

 

가독성 좋지 않은 코드 때문에,, 어디서 에러가 발생했는지에 대한 추적이 어렵다.
좋은 코드의 예시로는 yarn의 소스코드를 봤을때, 핵심 기능들이 이해가 잘되었다.

가독성 좋은 코드란 무엇인가?

하지만 아직 가독성 좋은 코드가 무엇인지에 대해선 얘기하지 않았다.

서진님께서는 크게 2가지의 로직으로 나누어서 보았다.

1. es-lint나 prettier를 써서 심미적으로 좋은 코드

2. 코드를 봤을 때, 관심사가 명확하는 등 아키텍처적으로 좋은 코드

 

그렇다면 어떻게 가독성 좋은 코드를 쓸 수 있을까?

너무 많은 방식을 제시해주고, 합당한 이유를 함꼐 언급해주셨다.

1. 오픈소스등 좋은 코드를 참고하라 (you write what you read)

2. 재사용하지 않을 것이라도  코드에서 도메인을 덜어내라. (관심사 분리)

3. 더 쉬운 흐름으로 작성하려고 해라. (맥락을 덜어서 코드에 녹여내자)

4. 스터디 추천

5. 작은 것 부터 하면서 좋은 코드를 쓰는 능력을 기르자. (스티리밍 방식)

 

리팩토링은 언제 하면 좋을까? ?

사실 가독성 좋은 코드에 대한 꼬리 질문과 대답이었지만, 개인적으로 위로가 되고 공감이 되어서 카테고리를 분리하였습니다.

 

켄트 벡의 Tidy First라는 책을 언급하시면서 유림님께서 대답해주셨는데, 우리는 항상 설계를 더 힘을 써야하고 작성하냐 추후 리팩토링을 하냐에 대한 고민을 한다.

하지만 사실  완벽한 설계를 미리 하는 것은 불가능하다. 그렇기 때문에 리팩토링이 존재하는 것이다. 하지만 이 밸런스를 얼만큼 잡느냐는 항상 모호하다..

'이럴 때 작은 것부터 실천하고 설계하다 보면 점점 능력이 길러지면서 습관처럼 좋은 설계가 된다.'는 얘기를 해주셨는데,, 
결국 리팩토링이든 설계든 계속 좋은 코드를 작성하려고 노력하다 보면 지금 보다는 훨씬 좋은 설계가 가능하다. 

물론 한문철 처럼 3:7 이런 명확한 답변은 아니지만, 가장 현실적이고 공감 및 위로가되는 답변이라 느껴져서 좋았다.

 

느낀점

개인적으로 많은 위로가 되었고, 내가 했던 생각들이 마냥 틀리지 않았다는 생각이 들어서 좋았다..

Frontend Accelerator 1기 질문 중에 아래와 같은 내용이 있었고, 그에 대한 대답을 아래와 같이하였다.

복잡한 문제를 해결할 때 어떤 접근 방식을 사용하시나요? 

3가지 프로세스를 통해 문제의 복잡도를 낮추려고 노력합니다.
1. 복잡하게 해야만 하는지, 더 쉬운 방법은 없는지 생각하기
2. 누군가가 유사한 방법을 시도했는가 찾아보기
3. 각각의 단계를 세분화하고 생각과 시도를 병행하여 문제를 해결하기

좋은 코드를 쓰려면 좋은 글을 많이 봐라고 하신 것 처럼,, 좋은 사람이 되려면 좋은 개발 문화를 가진 사람들의 행동을 참고하자 라는 생각을 가진 적이 있었다.. 그런 측면에서 내 문제 해결 방식이나 능력도 점점 길러지고 있지 않을까?

 

 

물론 흔한 접근 방식이거나 보편적인 방식일 수도 있지만,  유사한 내용이 나와서 기분이 좋았다.. 문제해결을 마냥 잘못되게 하고 있지는 않구나 라는 위로를 받을 수 있었다.

 

그리고 최근 개인 프로젝트를 진행하면서 설계를 조금 더 꼼꼼히 했어야하는 아쉬움이 생겼는데, 성장이라는 관점에서 이러다 보면 다음번엔 좀  더 좋은 설계를 할 수 있지 않을까? 라는  위로가 되었다.

 

좋은 문화를 가지고, 좋은 사람들이 많은 회사라는 생각이 한번 더 들었다.