개발자 99% 커뮤니티에서 수다 떨어요!
TIL (Today I Learned)
2022.02.22
오늘 읽은 범위
3장. 함수
책에서 기억하고 싶은 내용을 써보세요.
작게만들어라! (p.42)
첫째도 작게, 둘째는 더 작게!
한가지만해라! (p.44, 45)
함수는 한가지를 해야 한다. 그 한가지를 잘 해야 한다. 그 한가지만을 해야 한다.
추상화 수준이 하나인 단계만 수행한다면 그 함수는 한가지 작업만 한다.
위에서 아래로 프로그램을 읽으면 함수 추상화 수준이 한 번에 한 단계씩 낮아진다. 나는 이것을 내려가기 규칙이라 부른다. (p.46)
서술적인 이름을 사용하라! (p.49)
좋은 이름이 주는 가치는 아무리 강조해도 지나치지 않다.
인수는 어렵다. -중략- 테스트 관점에서 보면 인수는 더 어렵다. (p.50)
프로그램을 짜다보면 불가피한 경우도 생긴다. 하지만 그만큼 위험이 따른다는 사실을 이해하고 가능하면 단항함수로 바꾸도록 애써야 한다. (p.52)
부수 효과는 거짓말이다. 함수에서 한 가지를 하겠다고 약속하고선 남몰래 다른 짓도 하니까. (p.54)
함수는 뭔가를 수행하거나 뭔가에 답하거나 둘 중 하나만 해야 한다. (p.56)
어쩌면 중복은 소프트웨어에서 모든 악의 근원이다. (p.60)
소프트웨어를 짜는 행위는 여느 글짓기와 비슷하다. (p.61)
대가 프로그래머는 시스템을 (구현할) 프로그램이 아니라 (풀어갈) 이야기로 여긴다. (p.62)
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
그동안 함수를 만들 때 작명이 귀찮고 함수이름이 길든 짧든 나중에 못알아본다 라고 생각했던 옛날이 생각나는 챕터 였습니다. 마냥 구현만 하려고 아등바등 할 땐 함수 이름이나 길이 등 돌아가면 됐지 라고 생각을 했는데 이제 키보드에 먼저 손을 대는 버릇을 고쳐야겠다고 생각을 했습니다.
함수를 구현한 후에도 다시 되돌아보면서 작게 한가지 일만 하고 있는지, 추상화 수준이 맞게 되었는지, 인수는 알맞게 들어갔는지 확인하고 리팩토링 해야겠다는 생각이 들었습니다.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
SRP(Single Responsibility Principle):
단일 책임 원칙
한가지의 책임을 가져야 한다는 원칙입니다.
말 그대로 자신이 맡고 있는 한가지 일에 대한 책임을 져야한다. 한 가지 이상의 일을 한다면 그건 SRP를 어기는 것이다.
OCP(Open Closed Principle):
개방 폐쇄 원칙
자신의 확장에는 열려있고, 수정에는 닫혀있어야 한다는 원칙입니다.
A가 B-1 기능을 사용하고 있는데 B-2로 바꿔야 한다고 했을 때, A에서는 B라는 인터페이스를 사용하기만 하고 B-1나 B-2 등 B를 구현한 구현체를 전달해주면 됩니다.
※ SRP, OCP를 찾아보면서 함수 챕터에서 읽었던 내용과 매우 유사함을 느낄 수 있었습니다. 아직 이론적으로만 이해했지만 직접 구현을 해보면서 더욱 개념을 깊게 이해하는데 힘써야겠습니다.