클린코드 1장 - 깨끗한 코드

French Marigold·2023년 10월 26일
0

클린코드

목록 보기
1/13

유지보수의 5가지 원칙 (xxiv)

  1. 정리: 적절한 명명법과 같은 방법을 사용해 코드가 어디에 있는지 알아야 한다.
  2. 정돈, 단정함, 체계화: 코드는 누구나 예상하는 위치에 있어야 한다.
  3. 청소: 과거의 이력이나 미래의 바람을 기억한 주석, 혹은 주석으로 처리한 코드는 제거하라.
  4. 표준화: 그룹 내에서 일관적인 구현 스타일과 기법을 익히라.
  5. 생활화: 자기 작품을 자주 돌아보고, 기꺼이 변경하는 것.

코드란? (2p)

  • 코드는 요구사항을 상세하게 표현하는 수단.
  • 기계가 실행할 수 있을 정도로 상세하게 요구사항을 명시하는 작업이 프로그래밍, 명시하는 결과가 바로 코드이다.

나쁜 코드는 개발 속도를 크게 떨어뜨린다 (3p)

  • 이제껏 프로젝트를 3개 정도 진행했었는데 나쁜 코드가 쌓일 수록, 내가 짜놓은 코드가 대체 무엇을 의미하는지 해석하는 데에 시간을 많이 보냈던 경험이 있다. 확실히 나쁜 코드는 개발 속도를 떨어뜨리고 개발하려는 의지도 떨어뜨리는 것 같다.

프로젝트 기한을 맞추는 방법 (7p)

  • 나쁜 코드를 양산하면 기한을 맞추지 못한다. 엉망진창인 상태로 인해 오히려 속도가 늦어지고 기한을 놓친다.
  • 기한을 맞추는 유일한 방법은 언제나 코드를 최대한 깨끗하게 유지하는 습관이다.

깨끗한 코드란 - 비야네 스트롭스트룹 (9p)

  • 논리가 간단해야 한다.
  • 의존성을 최대한 줄여야 유지 보수가 쉽다.
    • 의존성을 최대한 줄인다는 것은 각각의 코드 조각(함수, 클래스 등)이 서로에게 의지하지 않고 독립적으로 동작하되 필요한 정보만 교환하도록 설계하는 것이다.
    • 예를 들어 B함수가 A함수가 없으면 돌아가지 않는 상태로 운용된다면 B 함수는 의존성이 높은 상태이다. A 함수가 없이도 실행이 되도록 의존성을 줄여야 한다.
    • 이를 가능하게 해주는 것은 Protocol이다.
  • 세세한 사항까지 철저하게 오류를 처리해야 한다.
    • 메모리 누수 관리
    • 경쟁 상태
    • 일관성 없는 명명법
  • 깨끗한 코드는 한 가지를 제대로 하는 코드이다. 각 함수와 클래스와 모듈은 자기에게 주어진 딱 한 가지 일만 수행해야 한다.
  • 깨끗한 코드는 보기에 즐거운 코드이다.
  • CPU 자원을 낭비하는 코드는 우아하지 못한 코드이다.

깨끗한 코드란 - 그래디 부치 (10p)

  • 깨끗한 코드는 단순하고 직접적이다.
  • 깨끗한 코드는 잘 쓴 문장처럼 읽힌다. 해석해야 할 필요 없음. (가독성이 좋아야 함)
  • 깨끗한 코드는 결코 설계자의 의도를 숨기지 않는다. 명쾌한 추상화와 단순한 제어문으로 가득하다.

깨끗한 코드란 - '큰' 데이브 토마스 (10p)

  • 깨끗한 코드는 작성자가 아닌 사람도 읽기 쉽고 고치기 쉽다. (ㅠ…) ⭐️⭐️
  • 깨끗한 코드에는 단위 테스트 케이스(Unit Test)와 인수 테스트 케이스(UI Test랑 비슷한듯) 가 존재한다. (테스트 주도 개발)
  • 깨끗한 코드에는 의미있는 이름이 붙는다.
  • 특정 목적을 달성하는 방법은 하나만 제공한다.
  • 코드는 작으면 작을수록 좋다.
  • API는 명확하며 최소로 줄인다.

깨끗한 코드란 - 마이클 페더스 (12p)

  • 깨끗한 코드는 주의 깊게 짰다는 느낌을 준다.
  • 깔끔하고 단정하게 시간을 들여 정리한 코드가 깨끗한 코드이다.

깨끗한 코드란 - 론 제프리스 (13p)

  • 깨끗한 코드는 모든 테스트를 통과한다.
  • 깨끗한 코드는 중복이 없다.
    • 중복을 줄여주는 제네릭을 자주 활용하면 좋을 것 같다는 생각이 들었다.
  • 깨끗한 코드는 시스템 내 모든 설계 아이디어를 표현한다.
  • 클래스, 메소드, 함수 등을 최대한 줄인다.
  • 여러 기능을 수행하는 객체나 메소드가 있다면,
    • 객체가 여러 기능을 수행한다면 여러 객체로 나눈다.
    • 메소드가 여러 기능을 수행한다면
      • 기능을 명확히 기술하는 메소드 하나
      • 기능을 실제로 수행하는 메소드 여러 개로 나눈다.
  • 작게 추상화하기, 간단한 추상화를 고려하기.
1. 기능을 명확히 기술하는 메소드 하나
func makeHamburger() {
		washLettuce()
		grillPatties()
		cutCheeze()
		grillOnions()
		bakeBun()
}

2. 기능을 실제로 수행하는 메소드 여러 개
func washLettuce() {

}

func grillPatties() {

}

func cutCheeze() {

}

func grillOnions() {

}

func bakeBun() {

}

깨끗한 코드란 - 워드커닝햄 (15p)

  • 읽으면서 짐작한대로 돌아가는 코드가 깨끗한 코드다.

깨끗한 코드란 - 밥 아저씨 (18p)

  • 주변 코드를 읽기 쉬우면 새 코드를 짜기 쉬워진다. 즉, 읽기 쉽게 코드를 짜는 것이 깨끗한 코드이다.
  • 시간이 지나면 코드는 퇴보한다. 그러므로 코드를 언제나 깨끗하게 유지해야 한다.
  • 한꺼번에 많은 시간과 노력을 투자해 코드를 정리할 필요가 없다.
    • 변수 이름 하나를 개선하고
    • 조금 긴 함수 하나를 분할하고
    • 약간의 중복을 제거하고
    • 복잡한 if문 하나를 정리하면 충분하다.
profile
꽃말 == 반드시 오고야 말 행복

0개의 댓글