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