개발자 99% 커뮤니티에서 수다 떨어요!
TIL (Today I Learned)
2022.02.23
오늘 읽은 범위
3장. 함수
책에서 기억하고 싶은 내용을 써보세요.
함수는 첫째도 작게, 둘째도 작게.
if 문 등에 들어가는 블록은 한 줄로 하여 중첩 구조가 생길만큼 함수가 커지지 않도록 만든다.
함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야 한다.
함수 안에서 의미 있는 이름으로 다른 함수를 추출할 수 없다면 그 함수는 한 가지만 하는 함수이다.
코드를 읽으면서 짐작했던 기능을 각 루틴이 그대로 수행한다면 깨끗한 코드.
함수에서 이상적인 인수 개수는 0개(무항)다. 인수는 없거나 1, 2개까지는 괜찮지만 3개는 가능하면 피하고 4개가 필요한 함수는 만들지 말자.
어떤 코드든 절대로 무시하면 안되니까. 무시한 코드에 오류가 숨어드니까.
함수의 의도나 인수의 순서와 의도를 제대로 표현하려면 좋은 함수 이름이 필수다.
부수 효과를 일으키지 마라!
함수명에서 짐작할 수 있는 한 가지 기능만 넣고 함수명에서 짐작할 수 없는 부수적인 것들은 따로 뺴는 것이 좋다.
Try/Catch 블록은 코드 구조에 혼란을 일으키고 정상 동작과 오류 동작을 뒤섞기 때문에 별도 함수로 뽑아내는 편이 좋다.
오류 처리도 한 가지 작업이다. 따라서 오류를 처리하는 함수는 오류만 처리해야 마땅하다.
대가 프로그래머는 시스템을 구현할 프로그램이 아니라 풀어갈 이야기로 여긴다. 함수를 잘 만드는 스킬은 중요하지만, 진짜 목표는 시스템이라는 이야기를 풀어가는 데 있다는 사실을 명심해야 한다.
이야기를 풀어가기 쉽게 만들기 위해서는 분명하고 정확한 언어로 함수를 만들어야 한다.
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
과거에 코딩을 처음 공부하기 시작했을 때부터 니코썜 강의, 그리고 현재 회사의 시니어 개발자에게 코드 리뷰를 받아 수정과 리팩토링을 반복하며 알게모르게 습득했던 깔끔한 코드를 작성하는 방법들이 이번 장에 소개되어 많이 공감되었던 것 같다. 특히 니코쌤 강의에서 자주 등장하는 'Divide and conquer'가 책을 읽는 동안 여러 번 떠올랐다.
프로그래밍 언어라는 수단을 사용해 좀 더 풍부하고 좀 더 표현력이 강한 언어를 만들어 이야기를 풀어간다. (62페이지)
-> 프로그래밍 언어는 이야기를 풀어가는 수단이라는 것을 다시 한 번 상기시켜준 부분. 인상깊었다.
변수 파트를 읽었을 때도 그랬지만, 역시 PR 열기 전에 최대한 많이 검토하고 리팩토링 하자. (Rough draft가 아닌 최대한 깔끔한 문장으로 다듬어서 이야기를 풀어가자.)
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
SRP (Single Responsibility Principle):
모든 모듈, 클래스, 혹은 함수는 해당 프로그램의 기능의 한 부분에 책임을 가져야한다는 프로그래밍 원칙. (출처: wikipedia)
OCP (Open-Closed Principle):
객체 지향 프로그래밍에서, 클래스, 모듈, 함수 등의 소프트웨어 entity는 확장성이 있어야 하고 (open for extension) 변경에는 보수적이어야 한다는 (closed for modification) 원칙. 즉, 위와 같은 entity는 소스 코드를 조작하는 일 없이 확장 가능해야 한다는 것. (출처: wikipedia)