• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

함수를 분리할 때

22.01.23 16:31 작성 조회수 540

0

몇십 줄씩 작성되는 코드를 분리한다고 가정했을 때는,

분리한 코드를 함수화 시킨 뒤 그 함수를 다시 호출하는 식으로 처리할까요?

function calculateAmount (quantity, price) {
    calculateCondition();
}

이런 식으로 처리하면 될까요? 하지만 함수 간 의존성이 너무 높아진다는 우려는 없을까요?

답변 1

답변을 작성해보세요.

1

함수에 몇 십 줄씩 코드를 작성하는 것은 금기입니다. 이것은 90% 이상 리펙토링이 발생합니다. 리펙토링이 말이 그럴 듯해서 그렇지 실제로는 프로그램을 다시 개발하는 것입니다. 

함수 간 의존성은 함수를 분리하는 것과는 다른 관점이며, 이것은 코드 관점이 아니라 설계 관점입니다.

함수는 하나의 기능만 처리하도록 분리해야 합니다. 함수를 연결하여 최종값을 구하는 것은 다른 관점입니다. 함수를 분리하고 함수를 조합하여 결과를 도출하려면 코드보다 먼저 설계를 해야 합니다. 즉, 함수가 연결되어 결과를 도출하는 시나리오를 작성해야 하는데, 이것이 설계입니다. 강좌에서 코드 작성보다 "주석 먼저"라고 한 것은 이러한 것을 염두에 둔 것입니다.

함수 안에서 함수를 호출할 수도 있지만 밖에 함수를 각각 호출할 수 있습니다. 상황에 따라 다르지만 밖에서 호출하는 것이 확장성이 있습니다. 

use_mono님의 프로필

use_mono

질문자

2022.01.24

살뜰한 답변 감사드립니다, 선생님. 그런데 조금 더 궁금증이 있습니다.

그렇다면 몇십 줄이 되는 코드가 분리되어 각각의 함수가 되었다고 가정을 했을 때,

먼저 함수 하나를 먼저 거친 뒤,

나온 값을 다시 그 다음 함수에 넣어 결과를 도출하도록 하는 것이

각각 함수를 연결시키는 거라고 볼 수 있는 것일까요?

일반적으로 호출된 함수에서의 return 값을 받아서 사용합니다만, 반드시는 아니면 함수가 작성된 환경에 따라 다릅니다. 현재는 비기너 단계이므로 함수로 나눈다는 개념을 잡는 것이 중요하며 호출된 함수에서 반환된 값을 사용한다는 것으로 접근해도 되겠습니다.