개발자에게 중요한 덕목중 하나인 협업!
개발자들간의 협업을 잘 하기 위해서는 보편적으로 생각하는 “가독성 좋은 코드”를 짜는것이 중요합니다.
개발자들은 코드로 소통하기 때문이죠!
가독성 좋은 깨끗한 코드를 짜기 위한 도움서적을 읽고 정리해보았습니다.
클린코드
로버트 C.마틴 저
다음 책의 내용을 읽고 내용을 정리하였습니다.
물론 이 책의 내용이 절대적인것도 아니고 시대의 흐름에 따라 컨벤션이나 디테일들은 유행따라 바뀌기하기 때문에, 이 책의 내용들이 전부 절대적이라고는 생각하지는 않습니다.
그 중 보편적이고 지속될 수 있는 내용들을 생각해보면서 읽고 정리해보았습니다.
목차
나쁜코드란?
정의
•
성능적 측면
불필요한 연산이 들어가서 개선의 여지가 있는 코드
•
의미가 모호한 코드
이해하기 어려운코드, 네이밍과 그 내용이 다른 코드
•
중복된 코드
비슷한 내용인데 중복되는 코드
나쁜코드는 왜 나쁜가?
깨진 유리창 이론
•
환경의 결함은 사람들로 하여금 벽과 질서가 없다고 느끼게 만든다
•
거리에 담배꽁초가 버려져있다면 대다수의 사람들은 담배꽁초를 버릴 쓰레기통을 찾을 노력을 하지 않을 것이다.
•
다른사람들이 한대로 똑같이 바닥에 버린다.
•
바늘 도둑이 소도둑되는것과 같은 원리
⇒ 코드에 관점에서도 적용된다.
나쁜 코드를 두고 이어서 짜면 개선하고자 하는 노력 없이, 계속해서 나쁜 코드를 이어서 짜게 된다.
팀의 생산성 저하 / 기술 부채 쌓기
•
나쁜코드는 팀 전체의 생산성을 저하 시킨다.
◦
기존의 코드 수정을 어렵게 만든다
•
따라서 위의 그래프의 내용과 같이 기술부채를 쌓게된다.
새로운 시스템 필요
결국 기술의 부채가 한계에 다다르거나 더이상 유지보수가 불가능한 코드가 되었을때,
새로운 시스템이 필요하는 순간이오게 된다.
하지만, 현 시스템을 유지보수하면서 새로운 시스템 개발은 현실적으로 매우 어렵다.
따라서 처음부터 유지보수하기 좋은 코드를 짜는것이 매우 중요하다.
나쁜코드를 왜 짜는가?
일정이 촉박해서
일정안에 새로운 기능을 만들어야 하는것이 개발자들의 일이다.
하지만 일정에 맞추려다 보니, 개선의 여지가 있는 코드들을 일단 구현하고 넘어가게 된다.
“자세한 내용은 모르겠고 일단 구현하고 넘어가!”
급하니까 일단 구현하고 넘어가
→ 생산성 저하 (일정 딜레이)
→ 시간없으니까 일단 구현하고 넘어가
→ 생산성 저하 (일정 딜레이)
무한의 악영향 굴레로 …
오히려 일정에 못맞추게 되는 원인이 된다.
코드의 영향범위가 넓어서
괜히 한부분 건드렸다가 다른부분에 버그가 발생할까봐 건들지 못한다.
깨끗한 코드를 만드려고 기존 코드를 건드렸다가 다른부분에서 버그가 발생할 것을 우려하게 된다.
하지만 이렇게 발생한 기술부채는 더 큰 문제가 되어 돌아온다.
클린코드
깨끗한 코드(클린코드)란?
정의
•
성능이 좋은 코드
•
의미가 명확한 코드 == 가독성이 좋은 코드
•
중복이 제거된 코드
대가들이 정의한 클린코드
비야네 스트롭스투룹 (C++ 창시자)
I like my code to be elegant and efficient. The logic should be straightforward to make it hard for bugs to hide, the dependencies minimal to ease maintenance, error handling complete according to an articulated strategy, and performance close to optimal so as not to tempt people to make the code messy with unprincipled optimizations. Clean code does one thing well.
•
우아하고, 효율적인 코드를 좋아한다.
•
깨끗한 코드란 '한 가지'를 제대로, 잘 한다.
•
논리가 간단해야 버그가 숨어들지 못한다.
•
의존성을 최대한 줄여야 유지보수가 쉬워진다.
•
오류는 명백한 전략에 의거해 철저히 처리한다.
•
성능을 최적으로 유지해야 사람들이 원칙없는 최적화로 코드를 망치지 않는다.
•
깨끗한 코드는 한가지를 제대로 한다.
그래디 부치 (UML 개발)
Clean code is simple and direct. Clean code reads like well-written prose. Clean code never obscures the designer’s intent but rather is full of crisp abstractions and straightforward lines of control.
•
깨끗한 코드는 단순하고 직접적이다.
•
깨끗한 코드는 결코 설계자의 의도를 숨기지 않는다.
명쾌한 추상화와 단순한 제어문으로 가득하다.
•
깨끗한 코드는 잘 쓴 문장처럼 읽힌다.
코드를 대하는 태도
보이스카우트 규칙
"Leave the campground cleaner than you found it.”
미국 보이스카우트가 따르는 규칙 중
“ 캠프장은 처음 왔을때보다 더 깨끗하게 해놓고 떠나라” 는 규칙이 있다.
이것을 코드에 적용해 볼 수 있다.
내가 건드리기 전보다 더 깨끗한 코드로 만들어야 한다.
시간이 지날수록 코드가 좋아지는 프로젝트에서 작업해야한다.
⇒지속적인 개선이야말로 전문가의 정신이다.
-K 버전
한국형으로 비슷한 내용에는 다음 그림이 해당되는것 같다.
References
제가 의도와 다르게 해석하여 정리한 부분이 있거나 틀린내용이 있을경우 DM 으로 알려주세요!