개발자 99% 커뮤니티에서 수다 떨어요!
오늘 TIL 3줄 요약
- 하나의 함수가 하는 일은 한가지여야 하고 단순할수록 좋다.
- 함수가 하는 일을 함수명에 그대로 나타내줘야 한다.
- 일련의 문단을 읽듯이 함수가 읽혀야 한다.
TIL (Today I Learned) 날짜
2022.04.26
오늘 읽은 범위
3장. 함수
책에서 기억하고 싶은 내용을 써보세요.
하지만 각 switch 문을 저차원 클래 스에 숨기고 절대로 반복하지 않는 방법은 있다. 물론 다형성polymorphism)을 이용한다.
한 함수 다음에는 추상화 수준 이 한 단계 낮은 함수가 온다. 즉, 위에서 아래로 프로그램을 읽으면 함수 추상화 수준이 한 번에 한 단계씩 낮아진다. 나는 이것을 내려가기 규칙이라 부른다.
인수가 3개를 넘어가면 인수 마다 유효한 값으로 모든 조합을 구성해 테스트하기가 상당히 부담스러워진다.
플래그 인수는 추하다. 함수로 부울 값을 넘기는 관례는 정말로 끔찍하다. 왜냐 고? 함수가 한꺼번에 여러 가지를 처리한다고 대놓고 공표하는 셈이니까! 플래 그가 참이면 이걸 하고 거짓이면 저걸 한다는 말이니까!
함수는 return 문이 하나여야 한다 는 말이다. 루프 안에서 break나 continue를 사용해선 안 되며 goto는 절대로, 절대로 안 된다. 구조적 프로그래밍의 목표와 규율은 공감하지만 함수가 작다면 위 규칙은 별 이익을 제공하지 못한다. 함수가 아주 클 때만 상당한 이익을 제공한다.
오히려 때로는 단일 입/출구 규칙single entry-exit rule보다 의도를 표 현하기 쉬워진다. 반면, goto 문은 큰 함수에서만 의미가 있으므로, 작은 함수에 서는 피해야만 한다.
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
- 지금까지 나는 함수에서 조건에 따라 각각 return 문을 만들어줬었다. 또한 루프 안에서 break, continue도 자주 사용했던 것 같다. 함수 내용이 그렇게 길지 않았음에도 말이다. 불필요한 실행을 줄이려고 했던것이 구조적으로 나쁜 함수인지 몰랐는데 개선해볼 필요가 있을 것 같다.
- 내가 만들었던 함수가 과연 그 함수명이 나타내는 동사와 동일한 코드만을 실행했는지 제대로 확인하지 못했었다. 이것 또한 2장 좋은 이름과 일맥상통 하는 얘기인데 목적이 불분명한 코드는 제외하도록 신경써야겠다.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
- 객체 지향 언어에서는 출력 인수로 사용하라고 설계한 변수가 this라는 부분