인프런 커뮤니티 질문&답변

이이이이잉잉이님의 프로필 이미지
이이이이잉잉이

작성한 질문수

독하게 C를 배운 사람을 위한 선형 자료구조

삭제 및 결과 검증 코드 작성

SearchToRemove와 RemoveNode가 분리되어야 할 필요가 있을까요?

해결된 질문

작성

·

205

0

RemoveNode를 직접 먼저 구현한 후 강의를 듣게 되었는데요,
저는 RemoveNode 안에 Search하는 코드를 통합해서 짰는데 SearchToRemove가 RemoveNode를 실행시키기 위해서만 필요하다면 굳이 분리를 해야 할까 하는 의문이 들었습니다.

하나의 함수는 하나의 동작만 실행해야 해서 분리가 된 것일까요? 아니면 SearchToRemove가 나중에도 사용이 될 가능성이 있어서 분리된 것일까요?

제가 작성한 코드를 첨부합니다.


void RemoveNode(const char* pszName)
{
  USERDATA* pTmp = g_pHeadNode;
  USERDATA* previousNode = NULL;
  bool isFound = false;
  // 노드 찾기
  while (pTmp != NULL)
  {
    if (strcmp(pTmp->name, pszName) == 0)
    {
      isFound = true;
      break;
    }
    previousNode = pTmp;
    pTmp = pTmp->pNext;
  }
  // 노드 찾기 실패
  if (isFound == false)
  {
    printf("\"%s\" : Not Found, remove failed.\n", pszName);
    return;
  }
  // 헤드인 경우
  if (g_pHeadNode == pTmp)
  {
    g_pHeadNode = pTmp->pNext;
    free(pTmp);
    printf("\"%s\" : Found, remove successed.\n", pszName);
    return;
  }
  // 헤드가 아닌경우
  previousNode->pNext = pTmp->pNext;
  free(pTmp);
  printf("\"%s\" : Found, remove successed\n", pszName);
}

답변 1

1

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

코드를 분리한 가장 큰 이유는 UI 코드와 자료구조 코드를 분리하기 위함입니다. 물론 재사용 가능성도 고려한 결과이기도 합니다. 감사합니다. 😄

이이이이잉잉이님의 프로필 이미지
이이이이잉잉이

작성한 질문수

질문하기