ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [클린코드] 깨끗한 코드
    📚 개발 도서/클린코드 2023. 4. 18. 20:17

    코드가 존재하리라

    코드는 요구사항을 표현하는 언어이다

    • 언어는 요구사항에 가깝게 만들 수 있다.
    • 요구사항에서 정형구조를 뽑아낼 수 있는 도구를 만들 수 있다.

    나쁜 코드

    회사가 망한 원인은 바로 나쁜 코드 탓이었다.

    • 버그가 남아있고, 프로그램이 죽는 횟수가 늘고,
    • 출시하기에 바빠 코드를 마음대로 짜고, 기능을 추가할수록 엉망이 되어갔다.

     

    고행(wading)

    나쁜 코드를 헤쳐나간다.

     

    르블랑의 법칙 나중은 결코 오지 않는다.

    나중에 손보겠다고 한 코드와 돌아간다는 사실에 안도감을 느끼며 위로함 → 나중은 결코 오지 않는다.

    나쁜 코드로 치르는 대가

    나쁜 코드가 쌓일수록 팀 생산성이 떨어진다.

     

    태도

    “우리에게”라는 단어가 자주 나온다

    좋은 코드를 사수하는 일은 바로 우리 프로그래머들의 책임이다.

     

    원초적 난제 

    나쁜 코드를 양산하면 기한을 맞추지 못한다.

    기한을 맞추는 방법 → 빨리 가는 방법 → 언제나 코드를 최대한 깨끗하게 유지하는 습관

    그럼에도 기한을 맞추려고 나쁜코드를 짠다 → 빨리 가려고 시간을 들이지 않는다

     

    깨끗한 코드라는 예술?

    깨끗한 코드가 무엇인지 모르면 깨끗한 코드를 만들려고 애써봤자 소용이 없다.

    깨끗한 코드와 나쁜 코드를 구분할 줄 안다고 깨끗한 코드를 작성할 줄 안다는 뜻은 아니다.

    깨끗한 코드: 코드 감각 + 절제와 규율

    코드 감각이 있으면 좋은 코드와 나쁜 코드를 구분한다. 또한 나쁜 모듈을 보면 좋은 모듈로 개선할 방안을 떠올린다.

     

    깨끗한 코드란?

    • 보기에 즐거운 코드 (by 비야네 스트롭스트룹 (Biarne Stroustrup))
    • 나쁜 코드는 나쁜 코드를 유혹한다. 나쁜 코드를 고치면서 오히려 더 나쁜 코드를 만든다.
    • 깨끗한 코드는 한 가지에 집중한다.
    • 세세한 사항까지 꼼꼼하게 처리하는 코드(메모리 누수, 경쟁 상태, 일관성 없는 명명법)
    • 가독성: 잘 쓴 문장처럼 읽힌다. (by 그래디 부치 (Grady Booch))
    • 명쾌한 추상화: 코드는 추측이 아니나 사실에 기반해야 한다.
    • 다른 사람이 고치기 쉬운 코드 (by '큰(big)' 데이브 토마스 (Dave Thomas))
    • 테스트 케이스 존재
    • 큰 코드보다 작은 코드에 가치를 둔다. 작을수록 좋다.
    • 문학적인 코드: 인간이 읽기 좋은 코드
    • 주의 깊게 짜놓은 작품 (by 마이플 페더스 (Michael Feathres))
    • 중복이 없는 코드 (by 론 제프리스 (Ron Jeffries))
    • 클래스, 메서드, 함수 등을 최대한 줄인 코드
    • 집합에서 특정 항목을 찾아 추상메서드나 추상클래스를 만들어 실제 구현을 감싼다.
    • 읽으면서 놀랄 일이 없는 코드 (by 워드 커닝햄 (Ward Cunningham))
      코드를 독해하느라 머리를 쥐어짤 필요가 없어야 한다.
    • 언어를 단순하게 만드는 열쇠는 프로그래머이다.

    우리들 생각

    새 코드를 짜면서 우리는 끊임없이 기존 코드를 읽는다 (읽는 시간 : 짜는 시간 = 10 : 1을 훌쩍 넘는다)

    → 읽기 쉬운 코드가 매우 중요하다.

    기존 코드를 읽어야 새 코드를 짜므로 읽기 쉽게 만들면 사실은 짜기도 쉬워진다.

    보이스카우트 규칙

    코드는 시간이 지나도 언제나 깨끗하게 유지해야 한다. 시간이 지날수록 코드가 좋아지는 프로젝트를 작업한다고 상상하자.

    연습해, 연습

    반응형

    '📚 개발 도서 > 클린코드' 카테고리의 다른 글

    [클린코드] 객체와 자료구조  (0) 2023.07.16
    [클린코드] 시스템  (0) 2023.07.01
    [클린코드] 클래스  (0) 2023.06.15
    [클린코드] 함수  (0) 2023.05.07
    [클린코드] 의미 있는 이름  (0) 2023.04.29

    댓글

Designed by Tistory.