기타 개발관련

[Clean Code 를 읽으며] 1장. 깨끗한 코드란

나른한코딩 2022. 6. 29. 11:51

요약

1장 요약 링크

 

.

.

.

.

 

생각

이 장에서는 저자가 생각하는 나쁜 코드와 좋은 코드에 대해 이야기하고 있다.

 

* 이 장의 초반에 나오는 '80년대 후반 킬러앱을 구현한 회사' 예시를 보면...

출시 날짜에 쪼들려 코드를 마구 짜게 되었고,

그로인해 버그가 많이 양산되고 기능을 추가할수록 코드는 더욱 지저분해졌고

감당이 불가능하져 결구 회사가 망했다고 한다.

 

"여기서 회사가 망한 원인은 바로 나쁜 코드 탓이였다."

라는 문구가 있다.

과연 나쁜 "코드"의 탓일까?? (코드는 죄가 없어ㅠ.ㅠ)

 

나는 이 코드를 작성한 개발자들의 탓이라고 생각한다.

(저자가 의도한 바에 이것이 포함되어있다고 생각한다)

결국 코드를 작성하는 것은 개발자 즉, 사람이다.

 


 

기한을 맞추는 유일한 방법, 빨리가는 유일한 방법은 언제나 코드를 "최대한 깨끗하게 유지하는 습관" 이다.

라는 문구가 있다.

 

아무리 간부들이 닦달을 하거나 지정한 짧은 기간 내에 완성할 것을 요구했어도

개발자는 '일단 대충 짜고 나중에 고쳐야지' 라는 생각을 해버리면 안되는 것이다. (최악의 습관...!)

 

일단 짜고 나중에 리팩토링을 하겠다고 외친 사람 중에 그것을 실천한 사람은 드물다. (나 자신 포함..)

나는 내가 리팩토링에 시간을 쏟을 수 없을 것이라는 것을 알기에 현재의 상황에서 할 수 있는 최선의 코드를 작성하려고 노력한다.

(코드를 작성할 때 내 자신에게 항상 되뇌이는 말이기도 하다.)

 


회사에서 일을 할수록 점점 느낀다.

 

레거시 코드를 보면 두 가지 생각이 교차한다.

'이렇게 코드를 작성한데에는 다 이유가 있었을 것이야.. 그분도 바빳을 것이야..'

'누가 도대체 이렇게...나라면 저렇게 작성했을 텐데!!'

 

내가 저런 생각을 한다고 해서

레거시로 남아있는 코드가 나쁜 코드라고 단언할 수는 없다. 그렇다고 좋은 코드도 아니다.

반대로 내가 '이렇게 작성하면 좋겠다' 라고 생각한 코드가 좋은 코드라 단언할 수 없다.

(+ 시간의 흐름에 따라 좋은 코드는 바뀐다고 생각한다. 그 당시에는 좋은 코드라고 생각하고 작성했을 수도 있다는 생각도 든다.)

 

1장에서 저자가

주변의 유명한 개발자들에게 의견을 물어 좋은코드(=깨끗한코드)란 무엇인가에 대해 물어 정리해둔 글이 있다.

그것을 읽으며 나는 어떤 코드를 좋은 코드라고 생각할까? 라는 의문이 들었고 생각해본 결과는 아래와 같다.

 

좋은 코드를 만들 수 있는 방법은 나와 함께 개발을 하는 동료와의 잦은 의사소통이라고 생각한다.

회사마다 맞는 코드 컨벤션이 있고, 맞는 디자인 패턴이 있다.

예를 들어 아무리 비싸고 좋은 정장이 있다고 해도, 나에게 너무 크고 퍼스널 칼라와 맞지 않다면 좋지 않은 정장이다.

나에게 맞는 크기, 어울리는 색깔을 찾아 제작한 맞춤정장은 나에게 좋은 정장 이라고 볼 수 있다.

 

마찬가지로 좋은 코드도 회사마다 맞춤 코드가 있다고 생각한다.

이론적 좋고, 보편적으로 좋은 코드/아키텍쳐/라이브러리 등이 있을 수 있다.

하지만 지금 현재 내가 진행하는 프로젝트에서는 어떤 아키텍처를 사용하면 좋을까? 어떤 라이브러리를 사용 혹은 사용하지 않는게 좋을까? 어느 수준까지 모듈화를 하면 좋을까? 네이밍은 어떻게 하면 좋을까? ....

등을 지속적으로 고민하고 지금 나와 함께 일하는 동료와 지속적으로 끊임없이 논의하고 맞춰 나가면서 만들어진 코드가 좋은 코드라고 생각한다.

 


결론!


 

- 현재 회사의 프로젝트 배경, 비즈니스 도메인, 인력, 일정, 아키텍쳐 등에 초점을 맞춰 좋은 코드, 좋은 개발자란 무엇인가에 대해 고민해보는 것이 유의미하다 생각한다.

- 좋은 코드란, 결국 위와 같은 여러 요소들 속에서 가능한 많은 문제를 해결하는 코드가 아닐까??

(무작정 클린코드의 내용을 곧이곧대로 받아들인다면 오버엔지니어링이 될 수도 있지 않을까?)

- 나와 함께 일하는 동료와 끊임없는 커뮤니케이션을 하며 맞춰나가는 코드가 좋은 코드이다.

(일반화를 할 수는 없지만 적어도 나에게. 현재상황에서. 내가 속한 그룹에서는.)

.

.

.

 

1장 리뷰 끝!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형