개발자 99% 커뮤니티에서 수다 떨어요!
TIL (Today I Learned) 날짜
2022.04/26
오늘 읽은 범위
3장. 함수
책에서 기억하고 싶은 내용을 써보세요.
작게 만들어라
-블록과 들여쓰기:
if/else/while 등에 들어가는 블록은 한줄이어야 한다. 중첩구조가 생길만큼 함수가 커져서는 안된다.
한가지만 해라
-지정된 함수 이름 아래에서 하나의 추상화수준
-의미 있는 이름으로 다른 함수를 추출할 수 있다면 그 함수는 여러 작업을 하는셈
함수 당 추상화 수준은 하나로(내려가기 규칙)
-함수 내 모든 문장의 추상화 수준이 동일해야함
-함수 내 추상화 수준을 섞으면 코드를 읽는 사람이 헷갈림(근본개념인지 세부사항인지 구분어려움)
-내려가기 규칙: 각 함수는 다음 함수를 소개하고, 각 함수는 일정한 추상화 수준을 유지
Switch 문
-
서술적인 이름을 사용하라
-코드를 읽으면서 짐작했던 기능을 각 루틴이 그대로 수행한다면 깨끗한 코드
-서술적인 이름을 사용하면 개발자 머릿속에서도 설계가 뚜렷해지므로 코드를 개선하기 쉬워짐
-이름을 붙일 때는 일관성 있어야함: 모듈 내 함수 이름은 같은 문구, 명사, 동사를 사용해야함
함수 인수
-인수개수를 가능한 줄이자
-많이 쓰는 단항 형식: 인수에 질문을 던지는 경우/인수를 뭔가로 변환해 결과를 반환하는 경우가 아니라면 단항함수를 피하자. 변환함수에서 출력 인수를 사용하면 혼란을 일으킨다.
-플래그인수"
-이항 함수
-삼항 함수
-이수 객체
-인수 목록
-동사와 키워드
부수 효과를 일으키지 마라
-많은 경우 시간적인 결합(temporal coupling)이나 순서 종속성(order dependency) 초래
-출력 인수: 일반적으로 출력인수는 피해야함. 함수에서 상태를 변경해야 한다면 함수가 속한 객체 상태를 변경하는 방식을 선택해야함.
명령과 조회를 분리하라
-함수는 수행하거나 답하거나 둘 중 하나만 해야한다.
오류코드보다 예외를 사용하라
-오류처리 코드가 원래 코드에서 분리되어서 코드가 깔끔해짐
-Try/Catch 블록 뽑아내기: 코드 구조에 혼란을 일으키며, 정상동작과 오류처리 동작을 뒤섞으므로 별도 함수로 뽑아내는 게 좋다.
-오류처리도 한가지 작업이다
-error.java 의존성자석(magnet): 오류코드를 반환하는 것은 오류코드를 정의한다는 것. 오류코드 대신 예외를 사용하면 새 예외는 exception 클래스에서 파생되므로, 재컴파일/재배치 없이도 새 예외 클래스를 추가할 수 있음.
반복하지 마라
-중복 코드는 코드 길이가 늘어나고, 알고리즘이 변하면 여러 곳을 손봐야함. 어느 한 곳이라도 빠뜨리면 오류가 발생할 확률도 높아짐.
구조적 프로그래밍
-모든 함수와 함수 내 모든 블록에 입구(entry)와 출구(exit)가 하나만 존재해야함.
-함수가 아주 클떼 상당한 이익을 제공함
-함수를 작게 만들면 간혹 return, break, continue를 어러차례 사용해도 괜찮음.
-goto는 큰함수에서만 의미있음, 작은함수에서는 피해야함
함수를 어떻게 짜죠?
-단위테스트케이스
-글짓기와 비슷
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
이제 코딩 공부를 시작해서 모르는 것 투성이에요ㅠㅠ 나중에 공부하면 더 와닿을 것 같아요. 지금은 나중에 더 많은 코딩 내용을 알고나서, 이 책을 복습했을 때 더 많은 것이 눈에 들어올 그 날을 고대하면서 읽고 있습니당.