시작하기 앞서...
나는 클린코드의 개념을 먼저 인지하고,
상황과 실무 혹은 사람에 따라 달라질 수 있는 클린코드에 따라 생각해보기 위해 아래에 개념과, 3개의 영상에 대해 정리했다.
클린코드란
클린 코드(Clean Code)는 소프트웨어 개발에서 사용되는 개념으로,
읽기 쉽고 이해하기 쉬운 코드를 작성하는 것을 강조한다.
클린 코드는 프로그램의 동작을 보장하는 것뿐만 아니라,
코드 자체가 가독성이 뛰어나고 유지 보수가 쉽도록 작성되어야 한다는 원칙에 기반한다.
- 사람은 각자의 코드 철학이 있다.
- 해당유튜버의 철학(언어: C++)
- 초등~중학생도 알아볼 정도의 이해하기 쉬운 코드
- 알아보기 쉬운 Variable, Function Name
- 재활용성이 높은 Class, Interface, API
- 디자인 패턴 및 메타 프로그래밍을 적재적소에 잘 사용하자
DRY
- Don't Repeat Yourself
- 코드나 기능 및 로직등이 반복되어 나타날 때는 반복을 피해라
KISS
- Keep It Simple, Stupid
- 시스템을 디자인할 때, 심플함이 주 목표가 되고, 불필요한 복잡성은 피해야 한다.
- 열 줄짜리 코드를 짤 때, 한 줄로 작성하기 위해서 화려한 테크닉을 사용해 가독성을 떨어뜨리기 보다는, 누구나 이해하기 쉽도록 간결하고 심플하게 짜는게 좋다.
- 여러가지 기능을 가지고 있는 클래스, 서비스, 함수 등등들보다, 한 가지 기능만을 가지고 있는 것이 좋다.
YAGNI
- You Ain't Gonna Need It
- 시스템에 불필요한 복잡성을 더 하지 않는 내에서 확장성이 있는 코드를 작성
- 필요한 요소
- 필요없는 요소
- 필요하지 않는 기능
- 사용하지 않는 기능
- 지나치게 미래지향적
0. 왜 클린코드가 중요할까?
- 좋은 코드란 코드 그 자체로 설명이 다 되는 코드이다.
- 즉, 처음 보는 사람이 읽기만 해도 무엇인지 이해가 되고 더 이상의 부연설명이 필요없는 코드.
1. 검색이 가능한 이름을 사용
- 변수로 지정되지 않은 상수 및 타 데이터들을 검색이 가능한 이름으로 변수화 시켜서 모두가 알아볼 수 있게, 쉽게 찾을 수 있게 한다.
2. 함수명은 반드시 동사를 사용
- 함수는 딱 한 개만 잘해야 한다.
- 한 가지 동작(동사)를 중심으로 역할을 함을 잘 표현해야 할 것.
- 만약, 두 개 이상의 동작을 한다면 해당 함수를 쪼개야 할 필요성이 있다.
3. 인수(Argument)가 3개 이상이라면, *Configuration Object를 사용
- 넘겨주는 파라미터를 파악하기 좋고, 복잡해지지 않아서 추천.
- 모델링에 따라 필요한 경우 사용. 프론트에서 api를 사용하는 경우 Configuration object를 많이 사용함.
*Configuration object: 소프트웨어 개발에서 설정 정보를 하나의 객체에 모아 관리하는 패턴을 말한다. ex) DTO(Data Transfer Object)
4. boolean 값을 인수로 사용하는 것을 지양
- 만약 boolean 값을 인수로 받는 함수라면, 그 함수는 if-else를 포함하고 있을 것이다.
- if-else구조를 포함하고 있는 함수라면, 각각의 if-else 값을 다른 함수로 분리하는 것이 좋다.
- 여기서 다시 한 번 상기하자. 함수는 단 한개의 동작만 해야한다.
5. 짧은 변수명 혹은 (아무도 이해못하는) 축약어 사용하는 것을 지양
- 본인만 알아볼 수 있는 축약어는 사용하지 말자.
어차피 시간이 지나면 본인도 까먹는다.
- 누구나 알아볼 수 있는 변수명을 사용하자.
추가) 코드 작성과 동시에 코드를 이쁘게 쓰려고 하지말자.
우리가 코딩을 할 때는 약간 돌아있는(?) 상태가 되어서 코딩을 한다.
개발자들은 처음에 미친듯이 쓰면서 뭔가 작동이 되게끔 하려고 애를 쓴다.
그러니 초기 시작점부터 코드를 이쁘게 쓰려고 하지말자.
작동 확인 후에, 클린 코드로 다음어 주자.
그리고 리팩토링하는 시간은 작성하는 시간만큼 걸릴 수 있으니, 충분하고 여유있는 개발 기간을 가지도록 하자.