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

2020-12-17 DotNet編程愛好者

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

早幾年前,我可能會認為這樣的做法真得有用,特別是在編碼速度上。是的,有時候代碼生成器是可以幫助我們開發者生成模板化的,規範化的,大批量的機器代碼。但許多人就將它當做了程序開發的利器,沒有代碼生成器完全沒法寫代碼了,也沒辦法工作了。

覺得自己會用幾款代碼生成器好像很牛的樣子。得意的在老闆們,或是不懂技術的技術經理們面前炫耀:「XXX們,你看我的工作效率多高,你們的需求,你們想要的功能我只需要簡單的代碼生成就可以快速地搞定。」。這種做法就好比別人把一頭宰好並切好的牛肉放到你面前,再問你:「把這些牛肉放進冰箱需要幾步?」

答案你也許知道了吧?沒錯,三步。1.打開冰箱門;2.放牛肉進冰箱;3.關上冰箱門很簡單是吧?那麼,如果別人給你的是一整頭牛,而不是切好的牛肉,再問讓你把這頭牛放進冰箱,你又怎麼辦呢?上面的這個案例其實與開發者(特別是初級開發者)使用代碼生成器有著同樣的道理。使用代碼生成器的時候,這生成器就好比切好的牛肉,開發者在使用時不關心代碼生成器的底層是如何封裝的,也不知道內部邏輯是如何處理的。就好比不知道也不用關心那頭牛是怎樣被宰的,如何解剖的一樣。庖丁解牛是怎麼來的?是屠夫們經過反覆的實踐,掌握了牛的結構、經絡之後達到的一種境界。在開發的世界裡也是同理。我見過不少開發者(絕大多數是.NET開發者,因為筆者主要專注.NET的開發)都是習慣並喜歡使用代碼生成器來生成項目,甚至整個解決方案都能為他們生成就最完美了。他們中有些人已經有5,6年或者7,8年的開發經驗,不再是初學者了,但卻還在用著傳統的某某的代碼生成器生成著傳統的三層架的解決方案,在前端UI代碼中充斥著各種DataTable和DataSet,各種if...else...邏輯判斷,各種SQL語句拼接。。。

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

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

那麼作為熱衷於開發的我感到很欣慰了,但這樣的朋友應該不在多數,不然國內的.NET開發環境不會成如今這個要死不活的樣。我的觀點準確嗎?

究其原因,不外乎是這樣的:

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

他們的骨子裡或者根本就只是把程序開發當作多賺點錢的捷徑。

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

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

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

試想一下,如果代碼生成器都能搞定我們的編程工作,那像Microsoft,Google,百度,阿里,騰訊等等這樣的以技術為驅動的科技公司為什麼不直接寫一堆代碼生成器就好了,何必每年養成千上萬的開發者呢?

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

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

如果你在這三層的任意一層中添加了自己的代碼,替換時是不是又會遇到問題呢?

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

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

如果你執拗地喜歡利用傳統的代碼生成器去解決你項目中大部分工作,那麼恭喜你,你入錯行了,請趁早離開以免被坑得越來越深,因為你不熱愛這個事業,你遲早也會走的,這樣只會浪費你的寶貴的青春。

結束語

如果選擇了.NET這條路,請用心,認真對待,因為這是你的事業,你的付出也會得到回報。

相關焦點

  • 工具推薦:15款代碼生成器
    15款代碼生成器, 從弱智的色彩漸變代碼生成器, 到CSS生成器, 再到適合開發人員的.NET代碼生成器.Cssronnd – 在線生成css圓角代碼,可以設置圓角半徑、包含文字、圓角顏色、背景顏色、文字顏色以及寬度。支持代碼下載(其中包括4個圓角圖片)。
  • 「離我遠點」英語怎麼說?
    get away from me:離我遠點。Just please get away from me.求你離我遠點!離我遠點,你有口臭。Get away from me, you crazy old woman.滾遠點,你這瘋老婆子。
  • 六個強大的PHP/MYSQL代碼生成器介紹
    不過如果你使用PHP代碼生成器,您可以節省您大量的時間並降低開發成本。目前主流代碼生成器基本都是基於Web的,一旦安裝,它將允許你定義你的資料庫,它會自動生成所需的所有HTML,CSS和PHP文件的應用程式。然後,您可以簡單地更新這些文件到您的伺服器並在幾分鐘內得到完全可以運行的應用程式。下面介紹5個PHP代碼生成器:1.
  • Java 通用代碼生成器光 2.0.0 Insight(內省) 發布 Beta2 版,代碼...
    內省包含的第二個功能群是動詞否定,這個功能群允許您調整代碼生成器生成的功能,某個功能如果是不需要的,簡單,否定掉就行了。比如某個對象不可以刪除,但可以軟刪除,簡單,您只需要否定Delete和DeleteAll就可以了。如此先進靈活和易用的代碼生成器,您值得一試。
  • Java 通用代碼生成器光 2.0.0 Insight(內省) 發布嘗鮮版 4,代碼...
    動態椰子樹功能群允許您定義風格多樣的代碼約定,符合不同項目組不同的代碼約定。動詞否定功能群允許您自定義需要的代碼,比如,某個域對象不需要刪除功能,您只需要在Excel模板中否定了Delete動詞,相關的代碼就不出現在代碼生成物中了,非常方便,大大節省了工作量。如此先進靈活和易用的代碼生成器,您值得一試。
  • 初學者也沒關係
    本篇文章主要是讓初學者通過代碼了解 GAN 的結構和運作機制,對理論細節不做過多介紹。我們還是採用 MNIST 手寫數據集(不得不說這個數據集對於新手來說非常好用)來作為我們的訓練數據,我們將構建一個簡單的 GAN 來進行手寫數字圖像的生成。
  • JAVA代碼生成器,快速開發平臺之魂
    雖然在前後端上選擇了SSH框架系統作為基礎,但還是耗費了太多時間補代碼,再加上業務需求並不明確,導致後期頻繁的改動令人頭大,當時就想,如果有一種方式能將精力集中到業務上就好了。所以,就有了做一個高效寫碼工具的想法。當代年輕人就是這樣,想要就回去做,我在參考CMS網站時,發現很多都是能用模板填充的,且都是統一的實現方式。
  • Java 代碼生成器光 2.0.0 Insight(內省) 發布嘗鮮版 3,代碼變變變
    Java通用代碼生成器光 2.0.0 Insight(內省) 可以兼容所有這些變體,只需要在 Project 頁做簡單的設置,就可以方便地生成這些風格的代碼。如此先進靈活和易用的代碼生成器,您值得一試。
  • 時空之門前端代碼生成器 Swing 獨立版嘗鮮版公布,歡迎使用
    時空之門前端代碼生成器Swing獨立版嘗鮮版公布,歡迎使用
  • 時空之門前端代碼生成器獨立嘗鮮版 4.5 公布,歡迎使用
    時空之門前端代碼生成器開發者手冊已公布讓代碼生成器成為大家開發程序的一項優勢簡介時空之門前端代碼生成器,是第四代動詞算子式代碼生成器,經過徹底的重構的先進動詞算子式代碼生成器,也是專用的Vue+ElementUI前端代碼生成器,可以和多種後端代碼生成器搭配。和平之翼和光對前端代碼生成的支持是通過引用不同的時空之門的版本實現的。
  • 初學者要如何學好C語言
    在Unix下,你可以找到無數優秀的原始碼供你盡情閱讀,你可以方便地查看某個庫函數的聯機手冊,還可以看到最優秀的代碼風格(說到代碼風格,我會專門寫一篇文章詳細敘述)。歸結起來就是一句話:初學C語言,建議使用Windows系統和集成開發環境,在準備向「高手」方向努力時,請先轉向Unix平臺。書已選定,環境配置完成,正所謂萬事俱備,只欠你自己的努力了。
  • 初學者:如何學好C語言?
    在Unix下,你可以找到無數優秀的原始碼供你盡情閱讀,你可以方便地查看某個庫函數的聯機手冊,還可以看到最優秀的代碼風格(說到代碼風格,我會專門寫一篇文章詳細敘述)。歸結起來就是一句話:初學C語言,建議使用Windows系統和集成開發環境,在準備向「高手」方向努力時,請先轉向Unix平臺。書已選定,環境配置完成,正所謂萬事俱備,只欠你自己的努力了。
  • qq代碼生成器大全下載手機版軟體
    閱讀本文前,請您先點擊上面的藍色字體,再點擊「關注」,這樣您就可以繼續免費收到最新文章了。每天都有分享。
  • 技能分享:如何用生成器減少內存佔用,讓Python代碼運行更快?
    圖源:Unsplash如何使用生成器減少內存佔用並讓Python代碼運行更快,關乎你「代碼人生」的生死存亡。當調用一個生成器函數或者使用生成器表達式時,會返回一個稱為生成器的特殊迭代器。可以通過將此生成器分配給變量來使用它。當調用生成器上的特殊方法,例如next(),函數中的代碼會執行到yield語句。當執行到達了Python代碼中的yield語句,程序就會中止函數的執行,並將產生的值返回給調用方。
  • Python生成器那些事兒
    什麼是生成器?生成器(Generator)是一個非常強大的迭代器。其按照一定的算法生成一個序列。包含yield的函數會返回一個生成器。生成器函數和普通函數看上去很像,不同的是生成器的返回值是用yield實現的。
  • 和平之翼代碼生成器 SMEU 版 4.1.0 Beta7 寶船版本發布
    和平之翼代碼生成器SMEU版本代碼生成器全面支持前後端分離界面了(Excel,SGS)開發者手冊已公布讓代碼生成器成為大家開發Java程序的一項優勢歡迎大家使用由無垠式,和平之翼和光三代動詞算子式代碼生成器組成的動詞算子式代碼生成器陣列,在我的碼雲站點 https://gitee.com/jerryshensjf
  • 快速開發平臺之代碼生成器——實例分享
    ,今天為大家介紹快速開發平臺的代碼生成器功能。快速開發平臺的代碼生成器已經把常用的開發場景做成開發模板,按照開發嚮導一步步走,在遇到有複雜業務邏輯的地方稍作修改就可以。當然XJR快速開發平臺提供了原始碼,您的開發水平比較高的話可以做深層次的擴展。
  • ​如何使用生成器減少內存佔用,並讓Python代碼運行更快?
    本文轉載自公眾號「讀芯術」(ID:AI_Discovery)如何使用生成器減少內存佔用並讓Python代碼運行更快,關乎你「代碼人生」的生死存亡。 然而,當我剛開始學習Python生成器時,並不知道它最後會顯得如此重要。 但在學習機器學習的過程中需要編寫自定義函數時,它發揮了不可取代的作用。
  • 時空之門前端代碼生成器 4.5 獨立版 Beta6 版公布,經過精細調整
    項目地址:https://gitee.com/jerryshensjf/GatesCore發行版下載地址:https://gitee.com/jerryshensjf/GatesCore/attach_files時空之門前端代碼生成器開發者手冊已公布讓代碼生成器成為大家開發程序的一項優勢簡介時空之門前端代碼生成器
  • Java 通用代碼生成器光 2.0.0 Insight(內省) 發布 Beta 版,可以...
    讓代碼生成器成為大家開發Java程序的一項優勢簡介第三代動詞算子式代碼生成器:光SBMEU版,採用Maven, EasyUI,SpringBoot 2, MyBatis, MariaDB 技術棧歡迎大家使用由無垠式,和平之翼和光三代動詞算子式代碼生成器組成的動詞算子式代碼生成器陣列,在我的碼雲站點 https://gitee.com/