Skip to main content

Beautiful Code

·302 words

In a recent TED Talk Linus Torvalds gave a simple example for beautiful code; the kind of code he aims for within Linux. It is the kind of code that everyone should strive for.

The particular example was as simple as deleting an entry from a singly linked list. Here is the (adapted) code.

typedef struct list_node {
	void *payload;
	struct list_node *next;
} list_node;

list_node *head;

remove_list_entry(entry)
{
	prev = NULL;
	walk = head;

	while (walk != entry) {
		prev = walk;
		walk = walk->next;
	}

	if (!prev) {
		head = entry->next;
	} else {
		prev->next = entry->next;
	}
}

The list itself is defined straightforward: It consists of nodes with a payload and a next pointer. The head points to the first entry in the list. The removal function iterates over all entries, until the correct one is found and then removes it by modifying the next pointer of the previous element. When the head has to be removed an extra branch is taken as the head has no previous entry.

The trick that turns this into beautiful code is to remove the extra branch by adding an indirection. This also drops the need for keeping a prev pointer.

remove_list_entry(entry)
{
	indirect = &head;

	while ((*indirect) != entry) {
		indirect = &(*indirect)->next;
	}

	*indirect = entry->next
}

The idea here is that we don’t actually care about the entry we want to remove, but just about the thing pointing to it. For each entry there is a list_node * pointing to it. That one has to be changed. So if we want to remove the head indirect corresponds to &head and &(prev->next) otherwise.

The nice thing is that this indirection make the code shorter and less code contains less errors. It also contains less branches and may even run faster.