今天看了一集TED的视频,采访的对象是大名鼎鼎的Linus Torvalds,在谈到他期望的合作对象时,他说希望与有品味的一起工作,因为有品味的人不仅能写好程序,更多是他们有一种本能,知道如何解决问题的正确方式。
为了说明品味,Linus举了一个很小的例子,但是这个例子估计学过C语言的人都遇到过,就是如何删除链表中的一个元素:
课堂上学习的例子是这样的,首先定义两个指针,然后遍历这个链表,当遇到要删除的指针时,分两种情况,如果这个指针是第一个,就将头指针指向当前指针的下一个指针;如果这个指针是中间的指针,就将前一个指针内的指针指向当前指针所指向的下一个指针,上学时都是这么学的,简单明了,结构清楚。
while(walk!=entry)
{
prev=walk;
walk=walk->next;
}
if(!prev)
head=entry->next;
else
prev->next=entry->next;
但是Linus指出了一种更好的写法,该写法没有IF语句,没有区分要删除结点是头指针还是中间的指针,直接进行处理:
indirect=&head;
while((*indirect)!=entry)
indirect=&(*indirect)->next;
*indirect=entry->next;
所以这种方法就是有品味的,明显是一种解决问题的更好思路,怪不得大神喜欢,看来平时工作要想做得好,还是要在细节上入手,才能做得比别人好。