개발자 99% 커뮤니티에서 수다 떨어요!
2022.04.26~27
Today's Reading 3장. 함수
💡 오늘 TIL 3줄 요약
함수는 한가지 일만 해야한다!
위에서 아래로!
인수는 2개 이하로!
💡 책에서 기억하고 싶은 내용을 써보세요.
함수를 만드는 첫째 규칙은 ‘작게!’ 다. 이 규칙은 근거를 대기가 곤란하다. (경험상 그렇다는 말은 따라야지 😊 사실 읽을때 작은 단위일때가 보기가 편하긴 했다.)
if문/ else문/ while문에 들어가는 블록은 한줄이어야 한다는 뜻!?!?!!!
함수의 들여쓰기 수준은 1단이나 2단을 넘어서면 안된다.
함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야 한다. - SRP(Single Responsibility Prinicple)
함수 당 추상화 수준은 하나로
위에서 아래로 코드 읽기: 내려가기 규칙
한 함수 다음에 추상화 수준이 한 단계 낮은 함수가 옴
함수 인수는 0개 > 1개 >> 2개>>> 3개>>>>>>>>4개 (인수가 많을수록 복잡해짐/ 테스트 관점에서도)
많이 쓰는 단항 형식
질문을 던지는 경우 (Boolean)
event - event 입력 인수로 시스템 상태를 바꿈
플래그 함수는 추하다 - 한가지 이상의 일을 한다고 대놓고 말하는 셈
함수 이름에 인수 이름을 넣으면 인수 순서를 기억할 필요가 없음
부수효과를 일으키지 마라! - 한 가지만 하겠다고 약속하고 남몰래 다른 짓도 하는거
함수로 넘어온 인수나 시스템 전역 변수를 수정함
temporal coupling - 시간적인 결합
order dependency - 순서 종속성 초래
출력인수는 피해야 한다.
함수에서 상태를 변경해야 한다면 함수가 속한 객체 상태를 변경하는 방식을 택하기
appendFooter(s)
report.appendFooter()
함수는 뭔가를 수행하거나 뭔가에 답하거나 둘 중 하나만 해야 한다.
객체 상태를 변경하거나 객체 정보를 반환하거나 둘 중 하나
오류코드 보다 예외 이용하기
오류 처리 코드가 원래 코드에서 분리되므로 코드가 깔끔해짐
try/ catch 블록을 사용하되 별도 함수로 뽑아내는 편이 좋다.
오류 처리도 한가지 작업이니까 함수도 오류만 처리 하는게 맞음
✍️ 오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
부수효과를 줄여라, 부수효과에 대해 생각하라는 말을 자주 들었는데 도통 무슨 말인지 이해를 못했었다. 나름대로 부수효과가 생기면 멀티버스가 생긴다 라고 혼자 정의 내렸었는데 이번에 조금 제대로 이해를 한거 같다.
무엇보다 지금 내가 짜는 코드는 함수가 너무 많은 일을 하고 있다. 한가지 일만 하도록 수정해봐야겠다.
🧐 궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
switch문에 관련해서 잘 이해를 못했다. (p47)
💬 오늘 읽은 다른사람의 TIL