반복문 길이 줄이기.

Mr.뉴트리아·2020년 11월 18일
0

42Seoul 삽질노트

목록 보기
4/10

아는 사람은 알겠지만, 서울42에는 함수 당 25줄의 제한이 붙어있다. 프로젝트를 진행하면서 느낀건, if문과 while문의 을 쓰면 너무 많은 줄 수가 빠진다는걸 느꼈다.
그래서 이걸 재귀로 바꾸려고 시도했다.
구 코드는 이러하다.

if (!(*head))
	{
		if(!((*head) = malloc(sizeof(t_manager))))
			return (-1);
	}
	else
	{
		while ((*head))
		{
			if ((*head)->fd == fd)
			{
				(*head)->buffer = *buffer;
				return (1);
			}
			(*head) = (*head)->next;
		}
		if(!((*head) = malloc(sizeof(t_manager))))
			return (-1);
	}
	(*head)->next = NULL;
	(*head)->fd = fd;
	(*head)->buffer = *buffer;
	return (1);

여기서 더 줄이려고 해봐도, while문과 if문의 중괄호로 빠지는 줄때문에 더 이상 줄일수가 없었다. 오늘 이를 고치려고 했고, 재귀문으로 변경하였다.

  if (!(*head))
    {
        if(!((*head) = malloc(sizeof(t_manager))))
            return (-1);
        (*head)->fd = fd;
        (*head)->next = NULL;
        (*head)->buffer = *buffer;
        return (1);
    }
    if ((*head)->fd ==fd)
    {
        (*head)->buffer = *buffer;
        return (1);
    }
    return (gnl_push_buffer(fd, &((*head)->next), buffer));

확실히 줄었다!!! 처리 부분에서 어느정도 문제가 발생하긴 하지만, 그것은 수정하면 되는 일이고, 그렇게 뚱뚱하던 함수를 줄였다는 사실이 다행이라고 생각한다.

profile
뉴트리아는 가시쥐과에 속하는 설치류의 일종이다. 오랫동안 뉴트리아과의 유일종으로 분류했지만, 현재는 가시쥐과에 포함시킨다. 늪너구리, 해리서 또는 코이푸라고도 한다. 뉴트리아는 스페인어로 수달을 의미하고, 출생지 남미에서는 이 종류를 코이푸라고 부른다.

0개의 댓글