C#初學者們,請離代碼生成器遠點!!!

在程序開發的世界裏,各路前輩們爲了提升所謂的編碼速度,搞出了各式各樣的代碼生成器,來避免所謂的重複的人爲機械地粘貼和複製代碼,以此來提升生產力。前端

早幾年前,我可能會認爲這樣的作法真得有用,特別是在編碼速度上。

是的,有時候代碼生成器是能夠幫助咱們開發者生成模板化的,規範化的,大批量的機器代碼。

但許多人就將它當作了程序開發的利器,沒有代碼生成器徹底無法寫代碼了,也沒辦法工做了。編程

以爲本身會用幾款代碼生成器好像很牛的樣子。得意的在老闆們,或是不懂技術的技術經理們面前炫耀:「XXX們,你看個人工做效率多高,大家的需求,大家想要的功能我只須要簡單的代碼生成就能夠快速地搞定。」。

這種作法就比如別人把一頭宰好並切好的牛肉放到你面前,再問你:「把這些牛肉放進冰箱須要幾步?」設計模式



答案你也許知道了吧?沒錯,三步。

1.打開冰箱門;

2.放牛肉進冰箱;

3.關上冰箱門


很簡單是吧?

那麼,若是別人給你的是一整頭牛,而不是切好的牛肉,再問讓你把這頭牛放進冰箱,你又怎麼辦呢?


上面的這個案例其實與開發者(特別是初級開發者)使用代碼生成器有着一樣的道理。

使用代碼生成器的時候,這生成器就比如切好的牛肉,開發者在使用時不關心代碼生成器的底層是如何封裝的,也不知道內部邏輯是如何處理的。就比如不知道也不用關心那頭牛是怎樣被宰的,如何解剖的同樣。

庖丁解牛是怎麼來的?是屠夫們通過反覆的實踐,掌握了牛的結構、經絡以後達到的一種境界。

在開發的世界裏也是同理。

我見過很多開發者(絕大多數是.NET開發者,由於筆者主要專一.NET的開發)都是習慣並喜歡使用代碼生成器來生成項目,甚至整個解決方案都能爲他們生成就最完美了。

他們中有些人已經有5,6年或者7,8年的開發經驗,再也不是初學者了,但卻還在用着傳統的某某的代碼生成器生成着傳統的三層架的解決方案,在前端UI代碼中充斥着各類DataTable和DataSet,各類if...else...邏輯判斷,各類SQL語句拼接。。。架構

不知道看到此處的你是否正經歷着相同的處境或者是經歷過相同的場景?編碼

也許你說:」我不是這樣的開發者啊。「url

那麼做爲熱衷於開發的我感到很欣慰了,但這樣的朋友應該不在多數,否則國內的.NET開發環境不會成現在這個要死不活的樣。個人觀點準確嗎?spa

究其緣由,不外乎是這樣的:設計

在早年前,不少接觸程序開發(本文主要是C#)的人中,都是看中互聯網的高薪而加入到開發者這個大軍中的,他們爲的是錢途,而不是前途。他們不是真正意義上喜歡,或者說是熱愛編程。對象

他們的骨子裏或者根本就只是把程序開發看成多賺點錢的捷徑。blog

他們在想:」我就在程序界裏混幾年,等資歷老了,有個幾年的開發經驗或者是不停地跳槽,薪水天然就會不斷地往上漲。等混到了30歲,就有資格作高級工程師,作項目經理,作項目主管了。有沒有過硬的技術都不重要的。「

因此,如你,我,他所見到的現在的國內開發環境,真正熱愛編程這份事業的,願意深刻研究技術的人不多,由於他們的目的根本不在於此。

他們只想經過簡單的代碼生成器來」賺快錢「,他們在編程界裏呆了幾年以後,仍是不知道C#的面向對象編程思想,不知道泛型是什麼,更沒據說過反射,委託,事件,不知道還有設計模式,領域驅動設計。。。反正他們就知道有個叫「代碼生成器」的東東。甚至還驚訝地問:」原來C#還有這麼些啊?「

 

試想一下,若是代碼生成器都能搞定咱們的編程工做,那像Microsoft,Google,百度,阿里,騰訊等等這樣的以技術爲驅動的科技公司爲何不直接寫一堆代碼生成器就行了,何須每一年養成千上萬的開發者呢?

再說得具體一些,好比咱們使用某某代碼生成器來生成三層架構(這是不少C#初學者在入門或者開發生涯的前幾年中最熟悉的套路),這個架構中包含三層:實體層,BLL,以及DAL。

隨着一個項目需求的不斷變動,你的數據表結構是否是也會變動。那麼,問題是否是來了,每次變動表結構,你是否是須要從新生成這三層的代碼,而後把原來的代碼替換掉。

若是你在這三層的任意一層中添加了本身的代碼,替換時是否是又會遇到問題呢?

那你有沒有想過,有沒有辦法能解決這些問題呢,而不是一味地抱着代碼生成器過日子。代碼變動完,對應修改UI中的邏輯判斷後就萬事大吉。

筆者描述了這麼多,想表達的是(特別是對於C#初學者來講):剛入門或者初級階段,更多地要手寫代碼,多熟悉.NET Framework中的類庫,總是想着:「代碼生成器能幫我搞定的」是學不到真正的高級編程知識和技術的。

若是你固執地喜歡利用傳統的代碼生成器去解決你項目中大部分工做,那麼恭喜你,你入錯行了,請趁早離開以避免被坑得愈來愈深,由於你不熱愛這個事業,你早晚也會走的,這樣只會浪費你的寶貴的青春。

 

結束語

若是選擇了.NET這條路,請用心,認真對待,由於這是你的事業,你的付出也會獲得回報。

相關文章
相關標籤/搜索