그냥 사는 이야기

토발즈의 더 좋은 코드 본문

Development

토발즈의 더 좋은 코드

없다캐라 2020. 12. 30. 13:34
반응형

TED의 리누스 토발즈의 기본 철학편에서 보면 리눅스 커널 외에도 Git을 개발하고 그렇게 성공적인 개발을 연이어 하게 되면서 개발에 대한 철학을 이야기 해준다.

그러면서 토발즈가 같이 작업하고픈 개발자라면 어떤 개발자인지 간략히 설명하면서 Singly-List를 구현하는 코드를 예를 들어준다.

자신이 생각할 때 좋은 코드와 더 나은 코드에 대해 들려 준다.

개인적으로 이런 코드는 완전히 모른다고 하기에도 할 수 없지만 안다고도 할 수 없는게 실제 개발에서는 여기까지 고려하지 못할 것 같다. 한마디로 탈락… ㅠㅜ

꾸준히 적용해 보려 노력해보는 수 밖에 없겠다.

일반적인 코드

remove_list_entry(entry)
{
	prev = NULL;
	walk = head;
	
	// Walk the list
	while (walk != entry) {
		prev = walk;
		walk = walk->next;
	}
	
	// Remove the entry by updating the
	// head or the previous entry
	if (!prev)
		head = entry->next;
	else
		prev->next = entry->next;
}

더 나은 코드

remove_list_entry(entry)
{
	// The "indirect" pointer points to the
	// *address* of the thing we'll update
	
	indirect = &head;
	
	// Walk the list, looking for the thing that
	// points to the entry we want to remove_list_entry
	while ((*indirect) != entry)
		indirect = &(*indirect)->next;
	
	// .. and just remove it
	*indirect = entry->next;
}

더 나은 코드에서 보면 if 문 하나가 빠져 있다. singly list에서 매번 if 문을 사용하지 않는 코드는 결국 double pointer로 해답을 찾았는데 토발즈는 간단한 개선점이라고 이야기 하지만 이렇게 평범하지 않은 사고방식을 가진 사람을 좋아한다라고 하였다. 토발즈가 좋다고 해서 풀어봤다가 난 한참 헤맸었지만, 결국은 이런 수준까지 가려면 남다른 총명함이 필요하다고 본다.

'Development' 카테고리의 다른 글

주석의 재미 있는 활용  (0) 2021.03.08
Short-Circuit Evaluation에 대해서  (0) 2021.01.06
AWS EC2에서 MongoDB 설치 Setting  (0) 2019.08.18
Comments