Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
TIL-Assignment #02(2022.02.19[토])
#clean_code
2년 전
571


TIL (Today I Learned)

// 2022.02.19

오늘 읽은 범위

추천사 ~ 1장 깨끗한 코드

책에서 기억하고 싶은 내용을 써보세요.

  • 다시 말해, 코드에 정직하고, 코드의 상태에 관하여 동료들에게 정직하고, 무엇보다도, 자기 코드에 대해서 자신에게 정직하라는 뜻이다.[추천사 xxviii]

  • 언젠가 코드가 사라지리라 생각하는 사람들은 언젠가 비정형적인 수학이 나오리라 기대하는 수학자와 비슷하다. 그들은 우리가 시키는 대로가 아니라 원하는 대로 돌아가는 기계가 나오리라 기대한다. 우리가 그런 기계를 만드는 방법을 찾으내리라 믿는다.[p.3]

  • 우리 모두는 자신이 짠 쓰레기 코드를 쳐다보며 나중에 손보겠다고 생각한 경험이 있다. 우리 모두는 대충 짠 프로그램이 돌아간다는 사실에 안도감을 느끼며 그래도 안돌아가는 프로그램보다 돌아가는 쓰레기가 좋다고 스스로를 위로한 경험이 있다. 다시 돌아와 나중에 정리하겠다고 다짐했었다. 물론 그 시절 우리는 르블랑의 법칙을 몰랐다. 나중은 결코 오지 않는다.[p.4]

  • 나쁜 코드를 양산하면 기한을 맞추지 못한다. 오히려 엉망진창인 상태로 인해 속도가 곧바로 늦어지고, 결국 기한을 놓친다. 기한을 맞추는 유일한 방법은, 그러니까 빨리 가는 유일한 방법은, 언제나 코드를 최대한 깨끗하게 유지하는 습관이다.[p.7]

  • 다시 말해, 깨끗한 코드와 나쁜 코드를 구분할 줄 안다고 깨끗한 코드를 작성할 줄 안다는 뜻은 아니다.[8]

  • 나쁜 코드는 나쁜 코드를 '유혹'한다! 흔히 나쁜 코드를 고치면서 오히려 더 나쁜 코드를 만든다는 뜻이다.[9]

  • 깨끗한 코드는 세세한 사항까지 꼼꼼하게 처리하는 코드다. 깨끗한 코드는 한 가지에 '집중'한다. 각 함수와 클래스와 모듈은 주변 상황에 현혹되거나 오염되지 않은 채 한길만 걷는다.[10]

  • 깨끗한 코드는 잘 쓴 문장처럼 읽힌다. 코드는 추측이 아니라 사실에 기반해야 한다. 반드시 필요한 내용만 담아야 한다. 코드를 읽는 사람에게 프로그래머가 단호하다는 인상을 줘야 한다.[11]

  • 깨끗한 코드는 작성자가 아닌 사람도 읽기 쉽고 고치기 쉽다.[11]

  • 깨끗한 코드는 언제나 누군가 주의 깊게 짰다는 느낌을 준다. 고치려고 살펴봐도 딱히 손 댈 곳이 없다.[12]

  • 깨끗한 코드를 위해서 중복을 피하라. 한 기능만 수행해라. 제대로 표현해라. 작게 추상화하라.[14]

  • 깨끗한 코드는 읽으면서 놀랄 일이 없어야 한다. 읽으면서 짐작한 대로 돌아가는 코드가 깨끗한 코드다.[14]

  • 새 코드를 짜면서 우리는 끊임없이 기존 코드를 읽는다. 비율이 이렇게 높으므로 읽기 쉬운 코드가 매우 중요하다. 비록 읽기 쉬운 코드를 짜기가 쉽지는 않더라도 말이다.[18]

오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

  • 추천사를 읽으며 소프트웨어 개발 과정에서 "내가 얼마나 코드에 정직 했었나?" 의문이 들었습니다. 매번 "일단 돌아가니까", "아직 발견된 에러는 없으니까", "시간이 없으니까" 핑계를 대며 정직하게 코드를 바라본적이 없었습니다. 저는 제 코드앞에서 정직하지 못했고 동료들에게도 마찬가지였습니다. 그저 동작하는 코드만을 만들어왔던 저를 돌아보게 되었습니다.

  • AI, 머신러닝의 발전에 따라 인간보다 더 뛰어난 연산능력과 메모리를 갖고 있는 기계가 발명된다면 코드를 작성하는 일 또한 그들에게 넘어가지 않을까 고민했던적이 있습니다. 하지만 사람이 입력한 값에 의해서 실행되는 프로그램은 있지만 사람의 마음을 읽고 실행되는 프로그램은 존재할 수 없다는 생각을 갖게 되었습니다.

  • 저에 대한 소개글 같은 느낌이였습니다. 시간에 쫓겨 프로그램을 개발하고 우선 배포하고 시간이 분명히 남았지만 다시 돌아보는 일은 없었습니다. 말 그대로 나중은 결코 오지 않았습니다.

  • 항상 기한을 생각하며 일했지만 매번 작업을 할 때마다 쓰레기를 만들며 나중에는 기한을 못지킬 수밖에 없는 상황을 만들고 있었습니다. 기한을 맞추며 빨리가는 방법은 오직 깨긋한 코드를 유지하는 습관뿐입니다.

  • 프로그래밍의 대가들의 클린 코드에 대한 의견들을 보면서 공통적인 부분을 생각해 봤습니다. 깨끗한 코드는 높은 집중력을 갖고 세세한 부분을 신경쓰며 한 가지 기능을 수행하는 것을 목표로 하고 다른 사람이 읽기 쉽고 고치기 쉬워야 하며 작성자의 의도를 읽는 사람이 명확하게 파악할 수 있어야 한다는 것입니다. 매우 어렵지만 앞으로 좋은 코드와 나쁜 코드를 구별할 수 있는 코딩 감각을 키워서 나쁜 코드를 좋은 코드로 바꿀 수 있는 프로그래머가 되겠습니다.

궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.

  • // 르블랑의 법칙? (LeBlanc's Law states) - "Later equals never" is used in the context of software development, but may be applied more broadly to other areas. The law is attributed to Dave LeBlanc.