In questa intervista a Slashdot Linus Torvalds è citato come dicendo:
I've seen too many people who delete a singly-linked list entry by keeping track of the "prev" entry, and then to delete the entry, doing something like
if (prev)
prev->next = entry->next;
else
list_head = entry->next;and whenever I see code like that, I just go "This person doesn't understand pointers". And it's sadly quite common.
People who understand pointers just use a "pointer to the entry pointer", and initialize that with the address of the list_head. And then as they traverse the list, they can remove the entry without using any conditionals, by just doing a "*pp = entry->next".
Come sviluppatore di PHP, non ho toccato i puntatori da Introduzione a C in università dieci anni fa. Tuttavia, ritengo che questo sia un tipo di situazione che dovrei almeno conoscere. Di cosa parla Linus? Ad essere onesti, se mi venisse chiesto di implementare un elenco collegato e di rimuovere un elemento, il modo "sbagliato" sopra è il modo in cui lo farei. Che cosa devo sapere per codificare come Linus dice meglio?
Sto chiedendo qui piuttosto che su Stack Overflow perché in realtà non sto riscontrando un problema con questo codice di produzione.