掌握“複製-粘貼-改”的IT技能 原

“Stop Trying to Reinvent the Wheel(不要重複造輪子 )”, 可能是每個程序員入行被告知的第一條準則。在公司裏面,我也會對團隊裏面每個新進的成員反覆灌輸這個理念。但要真正做到這一點也非易事。

尋找輪子

所謂“輪子”可以理解爲行業裏面的技術解決方案。特別是當今開源社區的盛行,開源軟件以及開源技術方案層出不窮,這爲尋找輪子提供了豐富的途徑。

避免重複造輪子

一個輪子能夠個被複用,體現了軟件的複用性。

使用輪子,本身就是“站在巨人的肩膀上”,最大化享受當今技術所帶來的便利,避免了從零開始開發的繁瑣以及複雜,有效降低成本。

以ORM框架爲例,在Java鄰域,真正做到強大的唯有Hibernate幾家,一方面,開發如何自己來實現ORM在技術有一定的難度,另一方面,開發自己的ORM需要很多的人力以及技術投入,一般的小公司根本沒有能力來做這方面的研發。

以 GNU/Linux 操作系統爲例,如果不是 Linux 作爲操作系統內核,提供給了 GNU 計劃,那麼 GNU 也許不知道要延遲多少年才能推出自己的操作系統;另一方面,GNU 計劃,提供了很多 GNU/Linux 操作系統的生態軟件,讓 GNU/Linux 操作系統更爲普通用戶所接受。

輪子難找

因爲選擇很多,所以很難選。目前,軟件行業空前發展,以分佈式消息服務框架,光開源的產品就有很多,包括Apache ActiveMQ、RabbitMQ、Apache Kafka、Apache RocketMQ等。這就對個人的信息檢索能力有非常高的要求。同時,也正因爲有很多選擇性,這也對用戶各種技術要有一定的瞭解,各種技術的優缺點要瞭如指掌,才能做出合理的選擇。這對於用戶的技術要有很高的要求。老衛的《分佈式系統常用技術及案例分析》一書,爲開發者提供了非常好的選擇依據。

其次,這個輪子好不好用,需要時間來論證。不能一眼就判斷出一個項目的質量以及易用性,這其實需要大量項目經驗的積累。即便做出了選擇,也需要一定的時間來驗證合理性。畢竟項目很多問題,只能在運行中才能體現出來。

最後一點是,好輪子需要打磨。要想將一個開源項目成功整合到自己的項目中,需要對這個項目有比較深入的瞭解。大部分的開源項目的文檔質量參差不齊,當使用輪子時,只看文檔往往是不夠的,還需要閱讀源代碼甚至深度修改定製。即便集成到了自己的項目中,也可能需要不斷的進行修正調優以符合自己項目的實際。

掌握IT技能的“複製-粘貼-改”

合理複用現有的好輪子,以最大化降低開發項目的成本。如果說,輪子代表了框架級別的可複用的項目,那麼“複製-粘貼-改”則是更加精細顆粒度的代碼層次的複用。

很多開發者都很鄙視“複製-粘貼-改”,認爲所有的代碼必須要從0開始敲出來才能真正牛人。這其實有失偏駁。比如,開發人員C君在A項目裏面寫了一段方法,經歷住了上線的壓力,目前也在線上能夠穩定運行。那麼如果項目B也需要同樣功能的方法,C君有必要再從頭去敲一遍代碼呢?爲什麼不直接“複製-粘貼”,除非有特殊的需求或者有對該方法的更好的改進,那麼大膽的“複製-粘貼-改”即可。或者將該方法重構出來,放到項目A和B共享的公用項目裏面不是很好?從頭敲一遍已有的代碼,除了增加自己的敲錯的機率意外,實在不知道還有什麼好處。當然,可能鍛鍊了打字速度。

也掌握“複製-粘貼-改”的技能,最難是要做到“改”這一點,因爲這一點做不好就是抄襲了。以前,老是說騰訊的軟件大多數模仿云云,但恰恰是人家“改”的功能出神入化,時間證明了,那些曾經被騰訊模擬的公司、項目,要不死了要不半死不活,而騰訊卻穩坐大佬的位置,可見“改”功的重要性。

很多配置文件,其實能少打就不打。比如 Maven 的 pom 文件座標,你想要什麼類庫直接上中央倉庫去查找並“複製-粘貼-改”下即可,實現是沒有必要手打,打錯了XML也不會給你提示哦。

以下是 MvnRepository 提供的Maven座標。

以下是 MvnRepository 提供的Maven座標

真實案例

理解了複用了輪子的理論重要性,我們來看下真實的案例。

據統計,Google 有軟件工程師平均一天寫 100 ~ 150 行代碼,而且已經算是業界高效的了。這從側面反饋了,寫代碼並不是一天中工作的重心,高效的工程師更加註重於花時間在代碼的思考上面。

筆者的視頻課程《基於Spring Boot的博客系統實戰》(http://coding.imooc.com/class/125.html),遵循了業界軟件開發的真實開發方式,採用敏捷的漸進式開發的,後續章節會基於前一個章節的內容來延生。這個不是重複,而是最大化重用現有的代碼。遞進的每個章節的內容都是前後關聯的,讓前幾章的代碼內容,爲後續章節所用,即爲“學以致用”。

當然,這種開發方式也不是見得爲所有的開發者所接受。正如開篇所講的,熱衷於重複造論的人還是不少。

參考引用:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章