|
之前寫過一篇如果你也是.NET程序員,收到不少留言,各種意見都有,之前的說話方式不夠友好,特此向因看過而心生郁悶的人道歉。
問題在于我為什么不停的提面向?qū)ο竽亍Uf來我并不是面向?qū)ο笫ネ剑艺嬲胝f的是“結(jié)構(gòu)化”的編程思想和代碼組織方式的培養(yǎng)和習(xí)慣,我說的結(jié)構(gòu)化是“有結(jié)構(gòu)的“,這樣的結(jié)構(gòu)包括但并不限于面向過程和面向?qū)ο蟆?/p>
這樣就有個(gè)問題,比如“我自己獨(dú)特的結(jié)構(gòu)”不也是”結(jié)構(gòu)化”嗎。Martin Fowler的重構(gòu)的里有說“任何一個(gè)傻瓜都能寫成計(jì)算機(jī)能理解的代碼。唯有寫成人類容易理解的代碼,才是優(yōu)秀的程序員”,代碼如果僅僅給計(jì)算機(jī)讀那怎么寫都無所謂,只要是正確的代碼總能執(zhí)行,但是我們的代碼是需要維護(hù)的,一般的代碼更多還是要讓人能輕松的讀懂,所以“自己獨(dú)特的結(jié)構(gòu)”只能自己看。所以話說回來,大家都知道的,比較流行的“結(jié)構(gòu)”包括但并不限于面向過程和面向?qū)ο筮@兩種方式。 然而就算是面向過程與面向?qū)ο筮@兩種, 就算是其中之一,你堅(jiān)持了嗎?比如我的代碼到底是面向過程還是面向?qū)ο螅€是很混亂 就算無所謂,我的代碼能讓人輕松讀懂嗎?
面向過程或者面向?qū)ο蟮拇a就一定方便閱讀嗎?不管出于什么樣的原因業(yè)界流行這樣兩種。先是以C語言為代表的編程語言,以及面向過程的編碼方式,接著后來以Java語言為代表,面向?qū)ο蟮木幋a方式(我僅僅說的是代表,說的兩個(gè)方面), 我們?cè)趯W(xué)校的學(xué)習(xí)以這些為基礎(chǔ),工作中必然也是也這些為基礎(chǔ)交流。如果我們堅(jiān)持面向過程,或者面向?qū)ο螅蜑槲覀兊某绦蚍奖汩喿x提供了前提。怎樣才能體現(xiàn)面向?qū)ο蠛兔嫦蜻^程這兩種其中之一呢。如果你一直以C語言編程,堅(jiān)持面向過程編程中的一些原則,那么今后受過良好面向過程訓(xùn)練的人就比較容易閱讀你的代碼了不是嗎。如果你以Java或者C#編程, 堅(jiān)持面向?qū)ο笤O(shè)計(jì)與編碼的一些原則,不是為一個(gè)受過良好面向?qū)ο笥?xùn)練的人讀懂你的代碼提供了方便嗎?
我為什么說面向?qū)ο竽兀课腋獣r(shí)候的是堅(jiān)持“結(jié)構(gòu)化”,如果你能寫出優(yōu)秀的面向過程的設(shè)計(jì)也很好啊。如果你堅(jiān)持用C#來做面向過程的開發(fā)也行啊,希望下個(gè)接替你位置的人也是用C#寫面向過程代碼的人吧。不過更多的是一個(gè)用C#寫代碼的人接受的是面向?qū)ο蠓矫娴挠?xùn)練。用C也可以寫出面向?qū)ο蟮脑O(shè)計(jì)啊,不知道有人看過ooc這本書呢,(這本書里介紹用C語言寫面向?qū)ο蟮拇a,弄的很復(fù)雜),應(yīng)該有很多人不知道用static可以讓一個(gè).c文件的變量,結(jié)構(gòu)和函數(shù)變成私有的吧。只是這樣,一個(gè)只進(jìn)行了面向過程訓(xùn)練的人能輕松看懂用C做的面向?qū)ο箝_發(fā)代碼嗎。 所以一個(gè).NET小項(xiàng)目就不要面向?qū)ο罅藛幔f不定哪天因?yàn)楣δ軘U(kuò)展變成大項(xiàng)目了呢,更說不好將來維護(hù)的人根本就沒接觸過面向過程,就算一個(gè)小項(xiàng)目對(duì)他來說面向過程的一些做法也讓他看不到懂呢?
所以我為什么堅(jiān)持要讓設(shè)計(jì)和代碼面向?qū)ο竽兀恳驗(yàn)橛?NET本是是面向?qū)ο蟮拈_發(fā)庫(kù),而用C#做開發(fā)的人很多都是面向?qū)ο蟮某绦騿T,所以為了方便交流我們不是應(yīng)該盡量用面向?qū)ο蟮乃悸穪碜鲩_發(fā)嗎?而且面向?qū)ο蟮乃悸芬膊粌H僅是寫出容易閱讀的代碼,面向?qū)ο蟮母鞣N好處也不需要我說了吧. 從最開始寫機(jī)器碼,到匯編,高級(jí)語言,再到高級(jí)語言中出現(xiàn)面向?qū)ο笳Z言。面向?qū)ο髴?yīng)該是能解決很多問題才出現(xiàn)的吧。
在這里弱弱反對(duì)一下“完全貫徹實(shí)用就好,能解決問題就行,給錢就行”的觀點(diǎn),軟件工程師總需要有點(diǎn)信仰,有些堅(jiān)持的吧,如果軟件不僅僅只是你混飯吃的工具的話,而且就算是工具,你也不能讓你的工具隨便讓人動(dòng)不是嗎。 小小程序員的一點(diǎn)感慨,貽笑大方了。
it知識(shí)庫(kù):為什么要面向?qū)ο竽?/a>,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。