[GetNextLine] 리팩토링-프로그램의 목적을 고려한 코드
처음에는 함수를 동작하게 만드는 것에 집중해서 정신 없이 코드를 짰다면, 완성된 후에는 코드를 '눈에 잘 들어오게' 정리하고 싶다는 욕심이 생긴다.
1. get_next_line 함수를 직관적으로 수정하기
int get_next_line(int fd, char **line)
{
static char *backup[OPEN_MAX];
char buf[BUFFER_SIZE + 1];
int read_size;
int cut_addr;
if ((fd < 0) || (line == 0) || (BUFFER_SIZE <= 0))
return (-1);
while ((read_size = read(fd, buf, BUFFER_SIZE)) > 0)
{
buf[read_size] = '\0';
backup[fd] = ft_strjoin(backup[fd], buf);
if ((cut_addr = is_newline(backup[fd])) >= 0)
return (split_line(&backup[fd], line, cut_addr));
}
if (backup[fd] && (cut_addr = is_newline(backup[fd])) >= 0)
return (split_line(&backup[fd], line, cut_addr));
return (return_zero(&backup[fd], line, read_size));
}2. 실패
3. '좋은 코드'를 짜는 법
Last updated