我们在分析设计一个方案时,是要面面俱到,使其从功能到展现,从需求到扩展,等方方面面万能吗?
即使不考虑是否存在这样一个方案,也不考虑这个最终方案实现所需的成本,单就算是弄出来了,我们会不会最终发现这已经背离了我们需求的初衷,这不是我们需要的?
是的。这是不需要的,也是不现实的,更是不必要的!
《C陷阱与缺陷》中第0章有一个很有意思的习题,刚开始我还不理解此题的用意,至少觉得放在这样一本技术书籍中是多少有些“莫名其妙”的,但是后来发现这是对的。作者作为一个资深的技术专家,用自己几十年的经验研究了程序设计中的方方面面,在分享自己的经验时,在最前面就用此题来告诉后人一个意识形态的东西,而且很明显他认为这在程序设计中也是需要首要考虑的。
这个题目是这样的:“在烹饪时你是否失手用菜刀切伤过自己的手?怎样改进菜刀使得使用更安全?你是否愿意使用这样一把经过改良的菜刀?”
对以上这个题目,聪明的您是如何考虑的呢?好好想一下,下面我就给出作者的真知灼见了哦~
Answer:“我们很容易想到让一个工具更安全,代价是原来简单的工具现在要变得复杂一些。食品加工机一般有连锁装置,保护使用者不让手指受伤。但是菜刀却不同,给这样一个简单、灵活的工具附加保护手指避免受伤的装置,只能让它失去简单灵活的特点。实际上,这样做最后得到的更像一台食品加工机,而不是一把菜刀。”
好了,经典名言诞生了:“使其难于做‘傻事’常常会使其难于做‘聪明事’,正所谓‘弄巧成拙’。”!
不愧是C语言的大师!我想C语言的哲学应该也就是这样。C语言经历这么多年,其初始的设计思想始终如一:程序员了解他们在做什么,惟一的要求是程序员要明确地表达他们的意图。
这是放之四海皆准的哲学:简单就是美!