Victoree's Blog

[3] 함수 본문

Pattern/Clean code

[3] 함수

victoree 2021. 5. 11. 16:50
728x90

[clean-code] function 

함수

플래그 인수는 추하다

  • 왠만하면 잘못되었을 확률이 큼
  • join_funding_channel()
    • 한 함수에서 두 가지 작업을 하고 있음 (채널 추가 && 채널 추가 여부 확인)
    • id 값을 kakao_account_id, talk_user_id 두 가지를 지원하고 있는데, 하나만 지원하도록
      • kakao_account_id 인 경우는 함수 밖에서 처리하고 인풋으로 넘기면 되지 않을까..

인수가 3개 이상이 되면,, 캡슐화 시키는 게 나을까요?

  • 보통 같이 응집되어 붙어다니는 이유가 있음
  • 클래스나 하나의 오브젝트로 감싸는 방법도 좋음 (케바케)
    • core나 앱의 utils에 type을 만들어서 관리하는 방법도 있음
  • 물고있는 컨넥션이 있을 때는 클래스로 구성해서 분리해도 좋음
  • 굳이 특정 값을 들고 있을 필요가 없을 땐 그냥 서비스 레이어에서 관리하는게 좋음
  • 장고 미들웨어는 리퀘스트 리스폰스를 어떻게 처리할 지에 대해 관리하기 때문에 미들웨어에서 관리하는 건 생각을 좀 해봐야 함

함수를 작게 만들어라

  • 작게 만들다보면 자연스레 한가지 기능만 하는 함수가 됨
  • 추상화 수준도 하나로 동일해짐

함수를 어떻게 짜죠?

  • 테스트를 짜고 리팩토링(함수 분리, 이름 변경, 중복 제거)을 두 바퀴 정도는 돌아야 한다
    • 테스트 코드의 의존성을 줄이자
    • 테스트 케이스 더미 데이터를 변경해야하는 일이 자주 발생할 땐, mock을 하던지 테스트 방식을 점검해볼것

번외

유틸성 api 네이밍 방법

  • /{module_name}/{method_name}
  • /oauth/authorize (카카오 디벨로퍼스 rest api)
  • /mcard/register_withdraw_result 또는 /mcard/register-withdraw-competion
  • 이 API를 기반으로 동작하는 서버의 입장이 아닌 호출하는 클라이언트 입장에서 네이밍할 것!

compliance monitoring

  • 리뷰를 통해서 좀 해결할 수 있음
  • 리뷰를 한동안 안하다가 한방에 몇백파일 보는 일이 없도록,, sprint를 따서 feature를 잘게잘게 넣기

리팩토링/디자인 패턴 관련 링크 공유

728x90

'Pattern > Clean code' 카테고리의 다른 글

[1+2] 깨끗한 코드&의미있는 이름  (0) 2021.05.11
Comments