[Clean Coding] Introduction

라을·2024년 9월 8일

Clean Coding

목록 보기
1/10

좋은 프로그래머가 되기 위해서는 좋은 코드를 작성할 줄 알아야 할 것이다. 그렇다면 좋은 코드는 무엇이고, 나쁜 코드는 무엇일까?

나쁜 코드는 요약하자면, 다른 사람이 코드를 읽고 그 흐름이나 의도를 파악할 수 없는 코드를 말한다. 나쁜 코드의 문제점은 :

  • 버그를 쉽게 고칠 수 없게 됨
  • 릴리즈 주기를 길게 만듦
  • 로딩 시간을 증가시킴
  • 충돌을 더 자주 발생시킴
  • 기능이 추가되면 코드가 더 복잡해지고 점점 나빠짐

본 수업을 통해서는 다음을 배우게 된다고 한다

1. 나쁜 코드와 좋은 코드를 구분하는 방법
2. 좋은 코드를 작성하는 방법
3. 나쁜 코드를 좋은 코드로 변환하는 방법


🔻 나쁜 코드의 비용

나쁜 코드를 작성하는 것이 처음에는 빨라 보이지만 이는 착각이다. 결국 나쁜 코드는 팀의 개발 속도를 늦추며, 나중에 전체 시스템을 다시 디자인해야 할만큼 문제가 커진다

새로운 시스템도 결국 관리되지 않으면 나쁜 코드로 변해버린다

✔️ 좋은 코드가 나쁜 코드로 변하는 이유는 다음과 같다

1. 요구사항이 변경된다
2. 일정이 너무 빡빡하다
3. 관리자와 고객이 너무 엄격하다

모든 개발자는 나쁜 코드가 얼마나 팀 전체의 진행을 느리게 하는지 알고 있지만, 여전히 마감 기한을 맞추기 위해 나쁜 코드를 작성하게 된다(찔려 막..)

하지만 나쁜 코드를 작성한다고 마감 기한을 지킬 수 있는 것이 아니다. 오히려 나쁜 코드가 즉각적으로 개발 속도를 늦추고, 결국 마감 기한을 맞추지 못하게 된다

유일한 해결책은 항상 코드를 가능한 한 깨끗하게 유지하는 것이다


📌 클린 코드란

그래서 뭐가 클린 코드인데~?

Bjarne Stroustrup (C++ 창시자)
"나는 내 코드를 우아하고 효율적으로 만드는 것을 좋아한다. 로직은 직관적이어야 하고, 의존성은 유지보수를 용이하게 하기 위해 최소화되어야 한다. 에러 처리는 완벽해야 한다. 클린 코드는 사람들이 원칙 없는 최적화를 통해 코드를 엉망으로 만들고 싶지 않게 한다. 클린 코드는 한 가지를 잘 한다."

Michael Feathers
마치 누군가가 코드를 작성하는 것에 진심으로 신경을 쓴 것처럼 보여야 한다"고 정의합니다. 클린 코드는 더 이상 개선할 여지가 없을 만큼 깔끔하게 작성된 것이며, 모든 요소들이 잘 고려된 결과여야 한다

  • 효율적이어야 한다
  • 직관적인 로직을 가져야 하며, 의존성은 최소화되어야 한다
  • 에러 처리는 완벽해야하며, 클린 코드는 불필요한 최적화를 유도하지 않아야 한다
  • 한 가지 일을 잘하는 코드여야 한다
  • 잘 작성된 글처럼 읽혀야 한다
  • 설계자의 의도를 모호하게 하지 않아야 한다
  • 명확한 제어흐름을 가져야 한다
  • 읽는 사람이 예상한 그대로의 결과를 보여주어야 한다
  • 코드가 그 문제를 해결하기 위해 만들어진 언어처럼 느껴질 때 '아름다운 코드'라고 할 수 있는 것

Ron Jeffries는 우선순위에 따라 클린 코드를 정의한다

  1. 모든 테스트를 통과해야 한다
  2. 중복이 없어야 한다
  3. 시스템에 있는 모든 설꼐 아이디어를 표현해야 한다
  4. 클래스, 메서드, 함수 등의 엔티티 수를 최소화해야한다

프로그래머는 단순한 코드 작성자가 아닌 저자와 같다. 따라서 프로그램은 쉽게 읽혀야 하며, 이는 책임 있는 프로그래머의 기본적인 의무이다!

코드를 작성하는 시간보다 읽고 탐색하는 시간이 훨씬 더 많기 때문에, 코드를 쉽게 읽을 수 있도록 작성해야 코드 작성도 쉽게 할 수 있게 된다.

보이스카우트 규칙 : "캠프장을 처음보다 더 깨끗하게 하라"

이 규칙을 코딩에 적용하여 코드를 수정할 때마다 조금씩 더 깨끗하게 유지하려고 노력해야 한다. 예를 들어, 하나의 변수 이름을 더 명확하게 바꾸거나, 너무 큰 함수를 분리하는 등의 작은 변화가 누적되면 코드가 점점 더 나빠지는 것을 막을 수 있다.

profile
욕심 많은 공대생

0개의 댓글