我們在分析設計一個方案時,是要面面俱到,使其從功能到展現,從需求到擴展,等方方面面萬能嗎?
即使不考慮是否存在這樣一個方案,也不考慮這個最終方案實現所需的成本,單就算是弄出來了,我們會不會最終發現這已經背離了我們需求的初衷,這不是我們需要的?
是的。這是不需要的,也是不現實的,更是不必要的!
《C陷阱與缺陷》中第0章有一個很有意思的習題,剛開始我還不理解此題的用意,至少覺得放在這樣一本技術書籍中是多少有些“莫名其妙”的,但是后來發現這是對的。作者作為一個資深的技術專家,用自己幾十年的經驗研究了程序設計中的方方面面,在分享自己的經驗時,在最前面就用此題來告訴后人一個意識形態的東西,而且很明顯他認為這在程序設計中也是需要首要考慮的。
這個題目是這樣的:“在烹飪時你是否失手用菜刀切傷過自己的手?怎樣改進菜刀使得使用更安全?你是否愿意使用這樣一把經過改良的菜刀?”
對以上這個題目,聰明的您是如何考慮的呢?好好想一下,下面我就給出作者的真知灼見了哦~
Answer:“我們很容易想到讓一個工具更安全,代價是原來簡單的工具現在要變得復雜一些。食品加工機一般有連鎖裝置,保護使用者不讓手指受傷。但是菜刀卻不同,給這樣一個簡單、靈活的工具附加保護手指避免受傷的裝置,只能讓它失去簡單靈活的特點。實際上,這樣做最后得到的更像一臺食品加工機,而不是一把菜刀。”
好了,經典名言誕生了:“使其難于做‘傻事’常常會使其難于做‘聰明事’,正所謂‘弄巧成拙’。”!
不愧是C語言的大師!我想C語言的哲學應該也就是這樣。C語言經歷這么多年,其初始的設計思想始終如一:程序員了解他們在做什么,惟一的要求是程序員要明確地表達他們的意圖。
這是放之四海皆準的哲學:簡單就是美!