개발 서적/클린코드(Clean Code)

[클린코드] 3장. 함수

눙엉 2021. 12. 28. 22:55

이 글은 클린 코드를 읽고 좋은 구절들을 기록하거나 느낀 점을 기록하는 글입니다.

작게 만들어라

함수를 만드는 첫째 규칙은 작게 만드는 것이다. 책에서는 이 말에 대한 증거나 자료를 제시하기 어렵다고 했다. 작가의 지금까지 경험과 시행착오를 바탕으로 작은 함수가 좋다고 말한다. 물론 나도 이 말에 동의한다. 함수가 길어지고 커지면 파악하는데 많은 시간이 걸리고 크기가 크다는 건 여러 동작을 하는 확률이 높아지기 때문에 작게 만드는 것이 좋다고 생각한다. 

한 가지만 해라

함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야 한다.

함수 당 추상화 수준은 하나로

한 함수에서 추상화 수준을 섞으면 코드를 일는 사람이 헷갈린다. 하지만 더 심각한 것은 근본 개념과 세부사항을 뒤섞기 시작하면 다른 개발자들이 함수에 세부사항을 점점 더 추가하는 상황이 오기 마련이다. 정리가 되어 있지 않다면 코드를 어지럽게 작성하는 것에 죄책감이 들지 않아 더욱 코드는 엉망이 될 것이다.

 위에서 아래로 코드 읽기: 내려가기 규칙

아마 대부분 코드를 작성할 때 위에서 아래로 내려가면서 읽기 쉽도록 작성할 것이다. 작성해놓은 코드를 나중에 다시 읽어보면 뭔가 소설을 읽는 느낌이 들 때가 있다 그런 코드는 정말 잘 짜인 코드 같다. 위에서 아래로 읽어내려가듯이 코드를 구현하면 추상화 수준을 일관되게 유지하기 쉬워질 것이다.

서술적인 이름을 사용하라

이름이 길어도 괜찮다. 길고 서술적인 이름이 짧고 어려운 이름보다 좋다. 그리고 이름을 붙일 때는 일관성이 있어야 한다. 함수 이름은 같은 문구, 명사, 동사를 사용한다. 

함수 인수

함수에서 가장 좋은 인수의 갯수는 0개이다. 그다음은 1개 그다음은 2개이고 3개부터는 그냥 최악이다. 무조건 피하자 함수를 더 쪼개야 한다고 생각한다. 특별한 이유가 있다면 모르겠지만 특이 케이스는 제외하고 말이다.

부수 효과를 일으키지 마라

부수 효과는 절대 일어나면 안되는 일이다. 예상하지 못하는 상황이 발생할 수 있기 때문이다. 쉽게 찾을 수 있다면 다행이지만 애초에 발생하지 않도록 하는 것이 중요하다.

명령과 조회를 분리하라

함수는 수행하거나 뭔가에 답하거나 둘 중 하나만 해야 한다. 상태를 변경하거나 정보를 반환하거나 둘 중 하나다.

반복하지 마라

코드의 중복은 참 위험하다. 코드 길이가 늘어날 뿐만 아니라 코드가 수정되면 사용했던 모든 곳을 수정해줘야 하기 때문이다. 그래서 함수화 하는 것이 참 중요하다는 것을 개발하며 많이 깨닫는다.