Clean Code
개발이란 건 사실 명령어를 나열하는 행위이다
많은 연구자들은 이 개발을 인간의 언어와 비슷한 형태로 만드려고 노력해왔다
프로그래밍 [언어]라는 것을 사용하고 컴퓨터와 [대화]하는 데 사용하지만
이 책의 관점에서 봤을때 프로그래밍 언어는 결국 사람과 사람 간의 대화를 위해 사용한다
어떤 책을 읽다보면
표현이 명료하며 다음이 예상되고, 머릿속에 훤히 그려지는 글들이 있다
이는 사실 프로그래밍 언어로 표현한 코드에서도 마찬가지인 것이다
훌륭하고 간단명료하게 정리된 코드는 자신뿐 아니라 다른 독자가 읽을 때도
굉장히 중요한 것이다
나쁜 코드는 당장의 생산성에는 도움이 될지 몰라도
결국 생산성을 크게 떨어트린다
다른 기업들의 블로그 포스팅을 봤을 때도 많이 본 내용이다
회사 초창기에 마구잡이식으로 우당탕 개발한 코드들은 후에 문제를 일으킨다
결국 처음부터 다시 설계하여 짜는 경험담을 많이 봐왔다
왜 나쁜 코드가 생겼을까?
책에 나온 내용은 나의 핑계를 너무나 잘 꿰둟고있다
- 일정에 시달려서
나는 이미 개발한 코드를 다시 들여다보는 걸 좋아한다
잘못된 걸 찾아내고, 개선해나갈 거리를 발견하는 건 꽤나 즐겁다고 생각한다
하지만 이건 석사 때까지의 이야기이고 회사에서는 일정에 따라가기 벅찬 경우가 많다
야근을 하게 되고 오랜 시간 코딩을 하다 보면 집중력 또 떨어지고... 나만의 이야기는 아닐 것이다
르블랑의 법칙 : 나중은 다시 오지 않는다
개발 때부터 잘 짜야하는 것이다
재밌는 비유가 나온다
나는 의사고, 환자는 수술 전에 나에게 손을 씻지 마라고 요구한다
나는 당연히 거부하고 본래 메뉴얼대로 수술을 진행할 것이다!
그럼 나는 개발자다, 상사는 나에게 대충 빠르게 짜라고 요구한다
나는? 당연히 거부는 하겠지만 실제로는 어느 정도 스스로 타협을 하게 되겠지...
중요한 것은 나는 전문가이며 전문가로서 지켜야 할 원칙을 지켜야 한다는 것이다
누군가에게 말을 잘하고 싶거나 글을 잘 쓰고 싶을 때 어떻게 해야 할까?
1. 간단명료하게 표현한다
2. 머리를 쓰지 않고도 자연스럽게 간단 명료하게 말하는 습관이 들도록 반복한다
코딩도 이와 같다
사람은 좋은 글과 나쁜 글을 구분하게 되더라도 바로 좋은 글을 쓰지는 못한다
코드도 마찬가지며 이는 학습과 반복을 통해 습관이 들어야 하는 것이다
좋은 코드를 짜는 그 습관은 '청결'이다
'청결'한 코드를 짜는 습관을 들이도록 머리를 싸매면서 반복하는 것이 성장의 길이다
또한 여러 저명한 프로그래머들의 글귀가 하나씩 소개된다
하나씩 짧게 정리해본다
- 논리가 간단해야 버그가 숨어들지 못한다
- 의존성을 최대한 줄여야 유지보수가 쉽다
- 오류는 전략에 의거해 처리한다
- 성능을 최적으로 유지해야 이후의 최적화로 문제가 생기지 않는다
'우아함' Grace라는 말은 어느 순간부터 개발에 굉장히 많이 접하는 단어다
앞에서 책에 잠깐 언급했듯이 좋은 글은 보기에도 즐거운 글이며
좋은 코드는 보기에도 좋은 코드일 것이다
나쁜 코드는 너무 많은 일을 하려고 애쓰다가 의도가 뒤섞이고 목적이 흐려진다
깨끗한 코드는 한 가지에 집중한다
깨진 창문
- 창문이 깨져 방치된 건물은 누구도 신경 쓰지 않는다
- 심지어 창문이 더 깨지거나 주변이 더러워져도 말이다
즉 하나하나 세세하게 깔끔하게 처리하자는 말
- 깨끗한 코드는 잘 쓴 문장처럼 읽힘
- 설계자의 의도가 잘 나타남
- 명쾌한 추상화와 단순한 제어문으로 가득함
가독성이 중요하다
마치 반지의 제왕ㅋㅋ 같은 책을 읽듯이 코드가 읽히면 좋겠다
독자가 "아! 당연하지!"라고 생각이 들도록
- 아무리 코드가 우아하고 가독성이 높아도 테스트 케이스가 없으면 깨끗하지 않다
- 코드는 문학적이어야 한다(사람이 읽기 좋아야 한다)
테스트 케이스는 필수다
가독성 또한 필수다
- 깨끗한 코드는 누군가 주의 깊게 짰다
- 시간을 들여 깔끔하고 단정하게 정리한 코드다
깨끗한 코드는 고치려고 살펴봐도 손볼곳이 없으며
작성자가 이미 모두 고려하였다
코드 규칙
- 모든 테스트를 통과한다
- 중복이 없다
- 시스템 내 모든 설계 아이디어를 표현한다
- 클래스, 메서드, 함수 등을 최대한 줄인다
추상화를 사용하면 '진짜' 문제에 신경 쓸 여유가 생긴다
결론)
- 중복을 피하라
- 한 기능만 제대로 수행해라
- 제대로 표현하라
- 작게 추상화하라
- 깨끗한 코드는 짐작했던 기능을 각 루틴이 수행한다
- 많은 코드들은 엉뚱한 기능을 같이 수행한다
- 깨끗한 코드는 읽으면서 놀랄 일이 없어야 한다
- 명백하고 짐작한 대로 돌아가야 한다
'코드가 그 문제를 풀기 위한 언어처럼 보일 때' 아름다운 코드다
여기까지가 유명한 프로그래머들의 충언이다
개발자들이 코딩한 화면을 녹화해 보면
대부분이 코드를 작성하는 화면이 아니라
기존에 쓴 코드를 읽는 화면이다(스크롤하거나 다른 모듈을 찾아봄)
즉, 읽기 쉬운 코드는 자신에게 조차 큰 도움이 되는 일이다
보이스카우트 규칙 : 캠프장은 처음 왔을 때보다 더 깨끗하게 해 놓고 떠나라
'Cooperation' 카테고리의 다른 글
Agile (0) | 2021.07.30 |
---|---|
Clean Code - 의미 있는 이름 (0) | 2021.07.29 |
Clean Code - 추천사 (1) | 2021.07.23 |
개발 문화 (0) | 2021.07.18 |
특수 기호 명칭/이름 (0) | 2021.07.12 |