前言
對於程序員來說,很多時候,我們都在造房子,從學會框架或者是學會構建整個項目之后,慢慢的我們就會覺得自己在做的事情是一種重復勞動,很多時候只不過是換個面孔而已。而更快的造房子,造好看的房子可能是進一步你想要做的。
封裝
可能是你要學會的第一步,它能幫你學會造出你需要的合適的工具,而這些工具能幫你更快的造出你想要的房子。
封裝的定義
我對封裝的定義 ———— 將項目中需要多次使用,或者是重復勞動,或者是復雜且難看的代碼,打包在一起(抽離出來)作為一個通用的東西來使用
封裝可以是對自己寫的代碼進行封裝,也可以是對別人寫的工具或者是框架進行封裝,都可以。俗話說的好,寫代碼就是:要不就是將別人的輪子拿來用,要不就自己造輪子給別人用。別人的輪子不夠用,就改裝成飛機大炮自己用。
封裝的意義
1、減少重復代碼,讓代碼看起來整齊好看
2、減少重復開發,讓開發速度變快
3...
這里不列舉了,說白了向面試官吹牛也可以算是意義吧...
封裝的步驟
1、找到需要封裝的代碼(封裝永遠不是空想出來的)
可能是你項目本身需要封裝,又或是你看別人工具想要封裝...
2、列出封裝的目標
一開始我建議還是列出來靠譜,因為這樣不會讓你忘記最終的目標是什么。
3、封裝
然后就開始做吧!
4、測試
寫出你認為所有的在實際中的測試用例單元測試來測試你的工具
5、優化
對不合理的地方進行優化,對用的不爽的地方進行優化
6、打包
打包發布,到實際的生產中去使用吧
以OkHttp為例進行封裝
---如果你不知道okhttp那么你可以去了解一下再往下看。
找
在實際的項目中如果要發送http請求,那么我喜歡使用okhttp工具來完成這個事情,而實際使用的時候,我們每次請求都需要構建整個請求,顯得非常麻煩,每次都需要對請求的參數和返回的參數都進行構建,也很麻煩,所以我覺得有必要封裝一下
目標
我只是封裝三種類型的請求:
1、get請求
2、post請求 json格式
3、post請求 form格式
請求返回格式都是為json格式
要求:
調用請求方法,輸入url地址、請求對象,輸出請求返回的對象
封裝 + 測試 + 優化
(第一步最關鍵:先上網找找有沒有合適的,別人已經封裝過的信息,一方面是看看是否適合自己使用,另一方面,即使不能符合自己,那也可以看看是否能從中找到一些可以值得借鑒的地方)
整個過程我描述一下:
1、先把所有的代碼寫在了一個類里面
2、然后分離出需要的工具接口
3、然后分離內部需要的方法
4、抽離重復的部分
5、針對傳入對象進行泛型優化
6、編寫單元測試進行測試
7、編寫注釋和使用markdown
全部代碼:https://github.com/LinkinStars/http-helper
總結
1、這里封裝是很個性化的一種封裝,這樣的封裝多數是一種定制化的工具,你自己用會覺得很方便。
2、封裝會用到很多技術:泛型、反射...
3、封裝需要考慮的點很多:因為作為一個工具,你需要考慮到很多人的使用情況,很多測試都是需要做的。
4、封裝的優化很多時候會考慮使用設計模式讓整體更加優雅。
5、一開始是封裝一些別人寫的工具,后面是封裝一些自己寫的代碼,在后面是封裝一些框架。
6、越原始的封裝,封裝到最后依賴的越少,封裝最后的包越小,使用起來越來越方便。
這里是對封裝的一個舉例,封裝的工具本身不一定對你適合,你需要封裝屬於你自己的工具,如果你有好的建議,趕緊砸過來吧。