先前我又发牢骚写了篇[url=http://rednaxelafx.iteye.com/blog/348290]避免重复代码——know your library(续)[/url],主要是说如果标准库里有了某些功能那我们就别浪费时间在自己的代码里重复实现同一功能。重复实现功能在许多情况下不是什么好事,可能带来更大的维护负担,无法跟随标准库实现的更新而得到更新,等等。
不过Eric Lippert在昨天的一篇文,[url=http://blogs.msdn.com/ericlippert/archive/2009/03/20/it-s-not-magic.aspx]It’s not magic![/url],讨论的方向很明显是从另一个角度出发的:假如我要面试一个应聘者,而我的小组正是以实现那些基本功能的库为任务的,那我自然得要求应聘者具备实现它们的能力。Eric举了个“guaranteed-to-be-unique “cookie” value of some sort”的例子,我们也可以用别的例子来类比:如果你的任务就是去实现STL,那么里面的容器、空间分配器、traits等的实现细节当然要知道;如果你的任务是实现操作系统内核,那么C标准库里的malloc()都用不了,你正是应该提供它的人;它们不是“神奇的就存在”在那里的,而是人们分析问题并用代码来解决的。
Hmm,当然我不认为我的观点与Eric的矛盾,只是场景不同而已。不过这又一次提醒我得定时温习基础知识,不然“高级”代码写多了,基础会生锈……
不过Eric Lippert在昨天的一篇文,[url=http://blogs.msdn.com/ericlippert/archive/2009/03/20/it-s-not-magic.aspx]It’s not magic![/url],讨论的方向很明显是从另一个角度出发的:假如我要面试一个应聘者,而我的小组正是以实现那些基本功能的库为任务的,那我自然得要求应聘者具备实现它们的能力。Eric举了个“guaranteed-to-be-unique “cookie” value of some sort”的例子,我们也可以用别的例子来类比:如果你的任务就是去实现STL,那么里面的容器、空间分配器、traits等的实现细节当然要知道;如果你的任务是实现操作系统内核,那么C标准库里的malloc()都用不了,你正是应该提供它的人;它们不是“神奇的就存在”在那里的,而是人们分析问题并用代码来解决的。
Hmm,当然我不认为我的观点与Eric的矛盾,只是场景不同而已。不过这又一次提醒我得定时温习基础知识,不然“高级”代码写多了,基础会生锈……