一、概述
在園子里面有很多關于各種技術(shù)細節(jié)的研究文章,都是比較牛逼的框架研究;但是一直沒有看到關于怎么樣提高開發(fā)效率的文章,大多提高開發(fā)效率的文章都是關于自動化等方面的輔助工具類型的,而不是開發(fā)中的一些小技巧;今天從編碼規(guī)范、編碼技巧、開發(fā)思想、設計模式等各方面的經(jīng)驗來分享如何提高開發(fā)效率。
二、實際場景
在這個前后端分離盛行的開發(fā)年代,分工比較明確,開發(fā)者分前端開發(fā)者和后端開發(fā)者,然而感到欣慰的是.net 開發(fā)者大多是擔任著全棧開發(fā)的職責,有經(jīng)驗的開發(fā)者都是從前端走過來的,說白了前端業(yè)務代碼對后端開發(fā)者來說那都不是事。
前后端分離前
:幾年前前后端還未分離的時候,各種前端框架還未流行的時候,開發(fā)者的效率算是比較低下,后端干前端的活,甚至前端和后端夾雜工作,導致了工作開發(fā)容易亂,需要相互依賴,不能完全并行工作,這導致了開發(fā)效率底的一個極大的原因,同時開發(fā)出來的東西體驗也是很差。
前后端分離
:職責分明,后端專注后端的開發(fā),前端專注前端的開發(fā);相互依賴關系很弱,后端可以先定義開發(fā)接口,前端頁面及mock 接口對接,最后聯(lián)調(diào)測試時間前后端打通過;前后端完全可以并行開發(fā),開發(fā)周期縮短一倍時間;不過這也就會導致了一個致命的問題,大多開發(fā)者只管自己的那一部分,不會以全局考慮,導致的一個問題就是聯(lián)調(diào)測試時間代價太大,遇到問題相互甩鍋。
前后端都存在的問題,會再聯(lián)調(diào)測試時間全部暴漏出來,這也是為什么聯(lián)調(diào)測試時間會花費那么長時間,甚至晚上加班加點再處理問題的原因,總結(jié)如下:
三、空異常
1.1 不可信原則
作為開發(fā)者,你都可以把自己作為方法調(diào)用者的第三方,不需要去關注方法的實現(xiàn),只需要關注調(diào)用方法我應該得到什么結(jié)果;然而作為調(diào)用者第三方,你都需要認為實現(xiàn)者的方法都是不可信狀態(tài),只需要秉承該原則,基本上你就跟空異常沒有緣分了.
1.2 ?. (null條件運算符)
先來看一下以下代碼:
[HttpGet] public async TaskDataResponsebool>> GetTest() { var list = GetList();//獲取List 列表 if (list?.Count = 0) { return DataResponsebool>.AsError("沒有獲取到數(shù)據(jù)"); } //TODO 更新操作 return DataResponsebool>.AsSuccess(true); }
上面代碼很多人可能會這么寫,實際上是存在問題的list?.Count =0 實際上在list 為空的時候就成了null=0 判斷了,則也是false,不符合預期結(jié)果,正確的代碼如下:
[HttpGet] public async TaskDataResponsebool>> GetTest() { var list = GetList();//獲取List 列表 if ((list?.Count??0) = 0) { return DataResponsebool>.AsError("沒有獲取到數(shù)據(jù)"); } //TODO 更新操作 return DataResponsebool>.AsSuccess(true); }
這里就引用了?? 運算符(空合并運算符)
1.3 ?? (空合并運算符)
MSDN上面的解釋:?? 運算符稱為 null 合并運算符,用于定義可以為 null 值的類型和引用類型的默認值。如果左操作數(shù)不為 null,則此返回左操作數(shù);否則當左操作數(shù)為 null,返回右操作數(shù)。
1.4 如何遠離空異常?
秉承原則:不可信原則
,什么是不可信原則呢?你調(diào)用方法都任務改方法是不可信的,包括自己寫的方法;這在敏捷快速開發(fā)中更明顯,特別是調(diào)用團隊中別人開發(fā)的微服務api ,你不需要關注方法的實現(xiàn),只需要關注方法的結(jié)果即可,但是也不能太過于相信它;所有的返回結(jié)果你都需要判斷是否是null 的結(jié)果數(shù)據(jù),多結(jié)合?. 和?? 運算符進行合理的邏輯處理,可以讓你的項目從此遠離空異常。
二、If else 解套
先來看一看比較有趣的網(wǎng)絡上的圖片
2.1 取反原則
對于上面的if else 嵌套業(yè)務大家是不是經(jīng)常遇到,看到這種代碼會非常的頭疼,難于維護,影響開發(fā)效率,同時也容易出現(xiàn)bug。
有經(jīng)驗的開發(fā)者必定會對上面這段代碼進行優(yōu)化,我的經(jīng)驗是取反原則。
什么是取反原則呢?把不符合的條件先 return 下去,到最后留下符合條件的邏輯,這就是取反原則,一眼看下來就只有一層嵌套,不會存在多層嵌套。
我們來看下我遇到的實際場景代碼,源代碼大體如下:
if (condition) { if (condition1) { if(condition2) { if (condition3) { if (condition4) { // do something } else { // do something } } else { // do something } } else { // do something } } else { // do something } } else { // do something }
取反原則優(yōu)化后的代碼如下:
if (!condition) { // do someting return; } if (!condition1) { // do someting return; } if (!condition2) { // do someting return; } if(!condition3) { // do someting return; } if(!condition4) { // do someting return; } // do someting
三、必要的設計模式
開發(fā)過程中不要一個鏈路寫到底,需要把某塊業(yè)務先想好,定位明確,該業(yè)務是應該屬于哪一塊,哪一類業(yè)務,后續(xù)可能會出現(xiàn)哪些方面的業(yè)務變動,適當?shù)囊朐O計模式,那么多的設計模式,總有一個適合你當時開發(fā)的場景;
設計模式的選取需要對該模塊的作用及定義清晰,多思考,多歸類,自然而然心中就有了合適的設計模式的考量。
四、必要的單元測試
做到每個方法單元測試,最好是全路徑覆蓋到每一條分支的單元測試,先從小的方法單元測試,底層的方法單元測試通過后,再通過postman或者其他工具來進行對外API接口層面的測試,做到全路徑覆蓋的測試,往往開發(fā)人員有一個思維就是測試正常的業(yè)務流程,異常流程往往一概不考慮測試;然而出問題的都是那些異常的流程,單元測試需要遵守的原則如下:
到此這篇關于遵守這些原則讓你開發(fā)效率提高一倍的文章就介紹到這了,更多相關提高開發(fā)效率內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
標簽:丹東 莆田 遵義 鄂爾多斯 錫林郭勒盟 襄陽 雙鴨山 哈爾濱
巨人網(wǎng)絡通訊聲明:本文標題《遵守這些原則讓你開發(fā)效率提高一倍(收藏)》,本文關鍵詞 遵守,這些,原則,讓你,開發(fā),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關。