-
5장 - 가독성 높은 코드를 작성하라클린 코드(Clean Code)/좋은 코드, 나쁜 코드 요약 2023. 12. 14. 00:01반응형
어떻게 하면 가독성 높은 코드를 작성할 수 있을까?
- 서술적인 이름을 지어라
- 적절한 주석활용
- 간결하지만 이해하기 어려운 코드를 피하라
- 스타일 가이드를 채택하고 따르자
- 깊이 중첩된 코드를 피하자
- 함수 호출에 사용되는 인수도 가독성이 있어야 한다.
- 매직 넘버를 활용하지 말자
- 언어의 새로운 기능을 활용해보자
서술적인 이름을 지어라
예를 들어 토스터라는 부엌에 있는 가전제품에 이름을 지을 때 객체 A라고 아무렇게나 이름을 짓는 대신 무엇가를 굽는다는 뜻인 "토스터"라고 이름을 짓듯이 소프트웨어에서도 같은 원리를 적용해야 합니다.
이름을 지을 때는 최대한 변수, 함수 및 클래스가 별도의 설명할 필요가 없이 자명하면 제일 좋습니다.
적절한 주석활용
대부분의 경우에는 무분별한 주석대신에 이름을 효과적으로 짓는것이 더 좋습니다.
하지만 제품 또는 비즈니스 의사 결정 또는 이상하고 명확하지 않은 버그에 대한 해결책 등에는 주석이 효과적인 해결책이 될 수 있습니다.
간결하지만 이해하기 어려운 코드를 피하라
간혹가다가 알고리즘등을 풀다 보면 python으로 한 줄 코딩으로 문제를 해결하는 경우도 종종 있지만 이런 경우에 코드를 이해하기 힘든 경우가 있을 수 있습니다.
무작정 코드라인이 짧다고 좋은것은 아니고 더 많은 줄이 필요하더라도 가독성 높은 코드를 작성하는 것이 좋을 수도 있습니다.
스타일 가이드를 채택하고 따르자
누구는 camelCase 누구는 PascalCase로 코드를 작성할 수 있습니다.
팀에 스타일 가이드가 없다면 구글의 스타일 가이드를 따라도 되고 linter와 같은 도구를 활용해서 스타일 가이드를 지정해 보아도 좋습니다.
깊이 중첩된 코드를 피하자
if else 그 안에 if else 그 안에 for문 그 안에 if else 등으로 중첩된 depth가 쌓여가면 코드는 점점 읽기 어려워질 수 있습니다.
계속 if-else 안의 논리를 추적해야하며 값이 어떤 상태로 변경된는지, 반환되는지 파악하기 위해 인지과부하에 걸리기 때문입니다.
elary return등의 방식을 활용하거나 더 작은 함수단위로 분리하여 중첩된 깊이를 피해볼 수 있습니다.
함수 호출에 사용되는 인수도 가독성이 있어야 한다.
sendMessage("hello", 1, true);
1과 true가 어떤 것을 의미하는지 알기 위해서는 함수의 정의로 들어가서 각 인수가 어떤 것을 의미하는지 파악해야 합니다.
대안으로는 언어차원에서 명명된 매개변수를 지원하는 경우 사용할 수 있습니다.
때로는 value class 등으로 포장하여 new MessagePriority(1), RetryPolicy.ALLOW_RETRY 등으로 매직넘버를 래핑 하는 방법도 있습니다.
매직 넘버를 활용하지 말자
예를 들어 소스코드에 907.1847에 대한 곱셈이 있다면 이를 이해하기는 어렵습니다.
대안으로는 KILOGRAMS_PER_US_TON = 907.1847 등을 활용하여 해당 매직넘버가 어떤것을 의미하는지 명확하게 인지할 수 있게 도와주기 때문에 가독성을 높여줍니다.
언어의 새로운 기능을 활용해보자
예를 들어 자바 8에 스트림이 도입되었을 때 이를 통해 반복문을 간결한 함수형 스타일 코드로 작성이 가능해졌습니다.
이를 통해 코드가 읽기 쉽고 간결해질 수 있습니다.
하지만 다른 개발자들이 스트림에 익숙하지 않다면 사용하지 않는 것이 좋을 수도 있습니다.
위에서 소개했던 "간결하지만 이해하기 어려운 코드를 피하라" 와는 조금 상충되는 사례입니다.
'클린 코드(Clean Code) > 좋은 코드, 나쁜 코드 요약' 카테고리의 다른 글
7장 - 코드를 오용하기 어렵게 만들라 (0) 2023.12.16 6장 - 예측 가능한 코드를 작성하라 (0) 2023.12.15 4장 - 오류 (0) 2023.12.13 3장 - 다른 개발자와 코드 계약 (0) 2023.12.12 2장 - 추상화 계층 (0) 2023.12.11