不用框架也能編碼
沒有框架你編寫代碼還能又快又高效嗎?像這樣的試驗證明了:你能。但是你應該這麼做嗎?
我已經在一個令人愉快的項目上工作一段時間了,這個項目很小,小到讓我感到可以為所欲為,氮素呢?它又很大,大到能夠看到我的想法所產生的效用。通過這個項目我實施的一個試驗是:我能不能不用任何主要的框架去做它呢?這會花去更多的時間嗎?它會相當困難嗎?
方 法
很顯然,這裡擺出的觀點並不新穎而且很多人都認為這是開發軟體的正確途徑。因此,如果你熟悉依賴反轉的概念或者使用很多小程序庫(libraries)來代替一個大框架,那麼這個部分就對你不會有太大的啟發了。
正如我已經在上一段落中暗示的,我決心著重依靠依賴反轉原理,不管我在這個過程中鋪設了多少額外的具有「基礎設施」作用的代碼,那都是為了適應我的所需,而不是為了別的什麼。
為了更明確一些,對於任何一種正常來說可能被一種框架提供的代碼,我將以一個描述我的實際的、目前的需求為目的的介面(interface)開始。一旦介面設計完成了,我將在我的應用的基礎設施層面來使它生效。就本質上來說,我進入了一個圈圈,我發明某種被稱為夢想API的東西來解決問題,然後呢我再做可以接入API的應用。
因為我在這個項目上是有很確定的截止日期的,所以我把這些介面看作是防止時間表問題出現的備用計劃。如果發生任何失誤,我可能會嘗試引入重量級的防身武器(比如Spring)以及用它使介面生效。
只要時間表或者我低水平的編程技巧沒有什麼問題,我決心繼續用(相對來說)小的程序庫(libraries)以及自己編寫一些重要的代碼塊。
舉例:REST 端點
我猜用於暴露REST端點的代碼是一個特別好的功能的案例,這個功能一般會被諸如Spring、 Ratpack這類的框架所提供。我也覺得它會是這個post的好案例,作為定義端點的很酷的方法,當你選擇一個框架的時候,這是一件重要的事情。
在這個事例中,我的「夢想API」十分簡單。它要求基礎設施層來執行兩個介面以及定義兩個額外的類型別名(我們在Kotlin世界中)。
很明顯,我沒有立即寫下全部這些。我一個特徵接一個特徵,一個方法接一個方法地去迭代它。如果我記得正確,我的第一個端點只是請求「post」支持和一個請求體。
在應用啟動過程中,Router安裝啟用的一個實例是傳遞一個方法,這個方法對應用中的所有路由的初始化負責。
這裡,你的觀點可能有所不同,但是我真的認為這是一片令人愉快的API。最重要的事情是它可以做我需要的一切來服務於這個應用的特殊使用案例。
現在,因為一些好的理由,我並不真的想要展示這裡所執行的全部,但是我願意讓你知道這其實比很多人想像的要簡單得多。
例如,使用Servlet API來處理路徑參數的一個簡單機制是分裂字元串的事件和遍歷URI。
另一個來自你的應用與揭露REST端點相關的例子是啟動一個嵌入式web伺服器。一些人也會因為像Spring Boot這樣的框架有這個功能而開心,即使你親自啟動這個伺服器看起來真的是小菜一碟。
結 束
很高興我的小試驗很成功而且應用沒有用任何主要的框架就按時交付了。我也很高興用這種方式寫應用並沒有多煎熬。相反,我一直樂在其中,而且我沒有因為沒使用一些流行的框架而速度慢下來。
除了樂趣,我不確定在這個試驗中是否還有什麼重要的課題。首先,我一直問自己,為什麼我們這些開發者要盲從那些誇大其詞的框架,尤其是當這些框架並不能多有用時。另外,有沒有什麼方法能夠徹底改造我們開始啟動的每個項目的「輪胎」呢,尤其是當我們擁有眾多的微服務的時候。
每日推薦:
1.三十五年經驗分享:程序員進階八法
2.職業成長的四個關鍵詞:趨勢、目標、努力和素質
3.經典語句徵集│你能打動多少人?
4.在「人民的名義」面前,普通人如何成功突圍
如您有任何疑問,
以及想要和優才小編溝通,
請聯繫:15201480058
點擊展開全文
※SQL性能調優:查找慢查詢的5種方法
※經典語句徵集│你能打動多少人?
※Git趨勢Top9
※你需要知道的28個人工智慧術語
※如何在執行階段對 Angular 除錯?
TAG:優才學院 |
※為什麼分化的細胞能準確的讀取遺傳編碼,是誰在控制這個過程?
※您買了假絕對值編碼器嗎?您的知情權被忽視了嗎?——扒一扒偽絕對編碼器
※能致癌的不止是基因突變!非編碼區DNA突變也能推動癌症進展
※關於電容式編碼器,這些知識點你需要知道
※推出新款協作機器人和高性能容柵編碼器,鎂伽機器人基於「機器人+AIoT」賦能產業智能變革
※當編碼是犯罪時
※人類的奇異記憶,我們的大腦可能被別人「編碼」
※編碼一時爽,重寫火葬場?這些公司都重寫了軟體,結局卻不同
※非編碼基因的崛起
※耳機小白必讀 這些常見音頻編碼一定要了解
※用一篇文章來了解數據編碼
※從自編碼器到變分自編碼器
※生活中的二維碼,條形碼,編碼你都了解多少,快來腦補下
※唯一的編碼思想:重寫
※大腦是如何編碼複雜信息的?
※郵政編碼是否屬於可識別的個人信息?
※人類的所有感覺都可以被編碼,我們有可能生活在虛幻之中
※論文最愛的變分自編碼器,不了解一下?
※預測電影偏好?如何利用自編碼器實現協同過濾方法
※以正視聽!聯想完整還原5G信道編碼投票經過