為什麼會有人認為編程就是代碼的複製和粘貼?
為什麼會有人認為編程就是複製和粘貼呢?想起畢業時一個老師給我們講的他自己的段子,他是學計算機的,他一個姑姑是醫生,外科醫生,這兩個人相互看不起對方的職業,他姑姑就認為計算機有什麼難的,不就是打打字嗎?他認為外科醫生有什麼難的,不是拉個刀子嗎?肚子拉開,點一點,心肝脾肺腎,一二三四五,六?哎?多一個,拉去,再縫好。按照這個邏輯,會計就是填填單子,律師就是動動嘴,足球就是一群人搶搶球,有球的踢球,沒球的轉成跑步,編程就是打打字,高級一點的打字都不用,複製粘貼別人的代碼。
復用和繼承
恩師說過一句話:不會偷懶的程序員做不好程序員,意思是有一些功能,可以用非常笨拙的方式去實現,但你需要花很大的精力和時間,雖然慢勞動大,但簡單。偷懶的過程就是,你要主動「勤奮」地去思考,這個實現怎麼能簡單一點,效率高一點,還可以支持一定參數的擴展,以及擴大適用範圍,讓這個項目的其它功能、其它人可以直接通過繼承或是某種復用的方式來使用,哪怕是複製和粘貼。小公司里可能會更多的重頭寫,大公司里複製代碼比較常見,底層的框架早就打好了,在這個架構基礎上,實現不同業務,大公司的業務場景的複雜,沒法用一套代碼來實現所有的功能。十年前接觸過工商局的一套報表功能,用java實現excel的導出,當時網上能就查到的現成的解決方法就兩種,隨便選了一種,在這上面做二次封裝,方便其它人傳進幾個參數可以直接調用生成報表。剩下的工作基本上屬於體力活了,其它人調用這個模塊,按照相應的規則來生成,複製粘貼就可以了,只需要改改其中的參數名字或個數。這可能是導致外行人認為編程只是簡單的複製和粘貼的原因之一吧。
拿來主義
有現在的東西為什麼不用?開發中有一句話叫「不要造自己的輪子」,只要市面上有這個功能的實現,盡量拿別人的來用,人家寫的代碼不比你差,github上還有很多優秀的程序員一起幫忙優化。你要是自己重新寫,一個浪費時間,寫得還不一定比別人的好,所以只要有現成的東西,一定不要自己寫。比如驗證郵箱和手機號的正則表達式,js的一些高復用的功能,還有和第三方平台的通信,都有自己已經成熟的代碼,直接複製粘貼就可以,自己寫反而漏洞百出。還有一些已經成熟的半成品,像一些CMS內容管理系統,或者是CRM、商城、論壇,如果企業需要的業務不是定製的,那麼直接下載下來,稍微改改界面和logo就直接可以用,這些都已經經過測試驗證了,並且還有很多插件,沒必要再耗費時間和精力去現開發。這種拿來主義可能也是造成這種認識的原因吧。
知其然,並且知其所以然,初級程序員可能只知道複製的內容可以獲得什麼效果,高級程序員則知道為什麼可以要這麼寫。TAG:木易小光 |