개발

Clean Code 3장. 함수

ginseng 2024. 6. 11. 23:52

프로그래밍을 배우기 시작하고 첫 번째... 는 아니고 많았던 의구심 중 하나입니다.

 

왜 우리는 함수를 사용하는가

 

main 함수에 10000줄에 다르는 모든 로직을 넣고 실행해도 코드는 돌아가지만

 

한 달 뒤에 몇 줄의 코드를 수정하려고 할 때 어디에 어떤 코드가 있는지 찾는 건 끔찍합니다...

 

함수는 여기서 등장합니다. 함수는 기능을 구분합니다.

 

정말 쉽게 생각해서 100줄의 코드당 하나의 함수로 치환한다고 생각합시다.

 

그럼 우리가 봐야할 코드는 100개의 함수 이름과 그 안의 로직 100줄로 줄어듭니다.

 

 

그렇다고 무턱대고 100줄씩 잡을 수는 없고 어떻게 함수를 나눌 수 있을까요?

 

기능 별로 나누면 됩니다. 최대한 작게.

 

그리고 알아보기 쉽게 이름을 붙입니다.

 

Account getAccount(int AccountId)

boolean isExistedAccountInWinnerAccount(Account account, List<WinnerAccount> winnerAccount)

void sendGiftToAccount(Gift gift, Account account)

 

이 함수들은 각 추상화 정도는 다르지만 각자 목적을 가지고 있습니다.

 

뿐만 아니라 함수를 잘 설계하면, 함수 이름의 나열이 명세서가 됩니다.

 

"계정을 얻고 당첨자 계정에 포함되어 있다면 계정에 선물을 지급하라 "

 

 

함수의 입출력이 명확하게 나타나야 합니다.

 

의미없는 입력과 출력은 코드를 다시 읽게 만듭니다.

 

위의 코드에서 적절한 입출력으로 변경해봅시다.

Account getAccount(int AccountId)

WinnerAccount.isExistedAccountInWinnerAccount(Account account)

Account.sendGiftToAccount(Gift gift)

 

의미없는 입력이 사라지고 기능이 명확해 졌습니다.

 

 

 

 

'개발' 카테고리의 다른 글

Clean Code 2장. 의미 있는 이름  (0) 2024.06.11
Clean Code 1장. 깨끗한 코드  (0) 2024.06.10
Clean Code  (0) 2024.06.10