在開始本篇的主題之前,讓我們把上次遺留下來的問題都清理一下:
將其他組件中 axios 請求的地方封裝起來。
這里就不把代碼放在開頭了,相關代碼都放在文末,有興趣了解的童鞋可以先往下翻。
好了, 我們現在把上篇剩下的任務給完成了,接下來我們來正式開始本篇內容吧。
去重是什么
字面上意思:去除重復,在項目中,不可避免的會出現重復代碼。但是如果不好好去處理這些重復代碼,那很有可能就會給你很多“驚喜”。
如何為“重復” 下一個定義呢?
從最淺顯的層次來看, 相同即是重復。在我們上面的代碼中,每一個組件中都有這么一行代碼:
import RequestSender from '@/requestSender';
這就是重復代碼,在每一個需要發起請求的組件中你都會需要寫上這么一行代碼。那么讓我們就這個列舉一些可能出現的問題:
某一天修改了文件名
某一天移動了該文件
那么項目中需要修改的地方將會是多少呢?而在修改中會產生手誤的概率又會是多少呢?以上還是在單人開發的時候,如果團隊協作開發,這些情況的概率又會是什么樣的呢。
如何去重
當然,對于上面這種引入型的代碼,類似移動文件,修改文件名這種操作。IDE 就能很好的幫你處理,比如 WebStorm 如果你使用重構相關的功能去重命名,那么它會找出所有 “疑似”引用的代碼片段,你可以選擇所有相關的引用同時修改。
這是一種手段,很好的解決了上面這些問題。
那么讓我們來看看另一個重復代碼的問題:
class RequestSender { static GetBlogList() { return axios.get('https://451ece6c-f618-436b-b4a2-517c6b2da400.mock.pstmn.io/list'); } static Publish(data) { return axios.post('https://451ece6c-f618-436b-b4a2-517c6b2da400.mock.pstmn.io/publish', data); } static Login(data) { return axios.post('https://451ece6c-f618-436b-b4a2-517c6b2da400.mock.pstmn.io/login', data); } static Signup(data) { return axios.post('https://451ece6c-f618-436b-b4a2-517c6b2da400.mock.pstmn.io/signup', data); }}上面的代碼, 重點不在函數噢。 仔細看看它們有哪些地方重復了。
光從代碼上來看,其實有很多“重復”的地方,比如說 return、static、axios.get、axios.post。
這些重復有一部分是語法,有一部分是調用。這些都是不可避免的,因此這些重復代碼并不在我們需要重構的范圍內。那么,究竟是哪段代碼呢?
https://451ece6c-f618-436b-b4a2-517c6b2da400.mock.pstmn.io
準確來說,它并不算是代碼。而是“硬編碼”,從整體代碼上來看,這是目前所有后臺接口的
新聞熱點
疑難解答
圖片精選