溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

[Asp.Net Core]如何提高開發(fā)效率

發(fā)布時間:2021-03-08 14:20:20 來源:億速云 閱讀:102 作者:TREX 欄目:開發(fā)技術(shù)

這篇文章主要講解了“[Asp.Net Core]如何提高開發(fā)效率”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“[Asp.Net Core]如何提高開發(fā)效率”吧!

一、概述

在園子里面有很多關(guān)于各種技術(shù)細(xì)節(jié)的研究文章,都是比較牛逼的框架研究;但是一直沒有看到關(guān)于怎么樣提高開發(fā)效率的文章,大多提高開發(fā)效率的文章都是關(guān)于自動化等方面的輔助工具類型的,而不是開發(fā)中的一些小技巧;今天從編碼規(guī)范、編碼技巧、開發(fā)思想、設(shè)計模式等各方面的經(jīng)驗來分享如何提高開發(fā)效率。

二、實際場景

在這個前后端分離盛行的開發(fā)年代,分工比較明確,開發(fā)者分前端開發(fā)者和后端開發(fā)者,然而感到欣慰的是.net 開發(fā)者大多是擔(dān)任著全棧開發(fā)的職責(zé),有經(jīng)驗的開發(fā)者都是從前端走過來的,說白了前端業(yè)務(wù)代碼對后端開發(fā)者來說那都不是事。

前后端分離前:幾年前前后端還未分離的時候,各種前端框架還未流行的時候,開發(fā)者的效率算是比較低下,后端干前端的活,甚至前端和后端夾雜工作,導(dǎo)致了工作開發(fā)容易亂,需要相互依賴,不能完全并行工作,這導(dǎo)致了開發(fā)效率底的一個極大的原因,同時開發(fā)出來的東西體驗也是很差。

前后端分離:職責(zé)分明,后端專注后端的開發(fā),前端專注前端的開發(fā);相互依賴關(guān)系很弱,后端可以先定義開發(fā)接口,前端頁面及mock 接口對接,最后聯(lián)調(diào)測試時間前后端打通過;前后端完全可以并行開發(fā),開發(fā)周期縮短一倍時間;不過這也就會導(dǎo)致了一個致命的問題,大多開發(fā)者只管自己的那一部分,不會以全局考慮,導(dǎo)致的一個問題就是聯(lián)調(diào)測試時間代價太大,遇到問題相互甩鍋。

前后端都存在的問題,會再聯(lián)調(diào)測試時間全部暴漏出來,這也是為什么聯(lián)調(diào)測試時間會花費那么長時間,甚至晚上加班加點再處理問題的原因,總結(jié)如下:

  • 開發(fā)過程中不夠謹(jǐn)慎,全是空異常問題

  • 代碼不規(guī)范,代碼邏輯嵌套層次太深,牽一發(fā)而動全身,以至于修改這里,爆露出那邊的問題出來,不會適當(dāng)?shù)慕怦?/p>

  • 后端接口返回的字段含義不明確,不清晰,甚至完全跟字段含義違背,比如數(shù)據(jù)庫中有一個int 類型的Type字段,而前端需要類型的中文名稱,后端開發(fā)者偷懶直接用Type 字段返回字段中文名稱,后面前端需要int 類型的Type 有不知道加什么字段為好,導(dǎo)致修修改改,影響效率,下面我會具體分享細(xì)節(jié)。

  • 眼觀不足,不會考慮后續(xù)的需求變更擴展

  • 沒有設(shè)計模式思想,導(dǎo)致維護(hù)成本變大

下面從幾個方面點來具體分析

三、空異常

1.1 不可信原則

作為開發(fā)者,你都可以把自己作為方法調(diào)用者的第三方,不需要去關(guān)注方法的實現(xiàn),只需要關(guān)注調(diào)用方法我應(yīng)該得到什么結(jié)果;然而作為調(diào)用者第三方,你都需要認(rèn)為實現(xiàn)者的方法都是不可信狀態(tài),只需要秉承該原則,基本上你就跟空異常沒有緣分了.

1.2 ?. (null條件運算符)

先來看一下以下代碼:

 [HttpGet]
 public async Task<DataResponse<bool>> GetTest()
 {
  var list = GetList();//獲取List 列表
  if (list?.Count <= 0)
  {
   return DataResponse<bool>.AsError("沒有獲取到數(shù)據(jù)");
  }
  //TODO 更新操作
  return DataResponse<bool>.AsSuccess(true);
 }

上面代碼很多人可能會這么寫,實際上是存在問題的list?.Count <=0 實際上在list 為空的時候就成了null<=0 判斷了,則也是false,不符合預(yù)期結(jié)果,正確的代碼如下:

 [HttpGet]
 public async Task<DataResponse<bool>> GetTest()
 {
  var list = GetList();//獲取List 列表
  if ((list?.Count??0) <= 0)
  {
   return DataResponse<bool>.AsError("沒有獲取到數(shù)據(jù)");
  }
  //TODO 更新操作
  return DataResponse<bool>.AsSuccess(true);
 }

這里就引用了?? 運算符(空合并運算符)

1.3 ?? (空合并運算符)

MSDN上面的解釋:?? 運算符稱為 null 合并運算符,用于定義可以為 null 值的類型和引用類型的默認(rèn)值。如果左操作數(shù)不為 null,則此返回左操作數(shù);否則當(dāng)左操作數(shù)為 null,返回右操作數(shù)。

1.4 如何遠(yuǎn)離空異常?

秉承原則:不可信原則,什么是不可信原則呢?你調(diào)用方法都任務(wù)改方法是不可信的,包括自己寫的方法;這在敏捷快速開發(fā)中更明顯,特別是調(diào)用團(tuán)隊中別人開發(fā)的微服務(wù)api ,你不需要關(guān)注方法的實現(xiàn),只需要關(guān)注方法的結(jié)果即可,但是也不能太過于相信它;所有的返回結(jié)果你都需要判斷是否是null 的結(jié)果數(shù)據(jù),多結(jié)合?. 和?? 運算符進(jìn)行合理的邏輯處理,可以讓你的項目從此遠(yuǎn)離空異常。

四.If else 解套

先來看一看比較有趣的網(wǎng)絡(luò)上的圖片

[Asp.Net Core]如何提高開發(fā)效率

取反原則

對于上面的if else 嵌套業(yè)務(wù)大家是不是經(jīng)常遇到,看到這種代碼會非常的頭疼,難于維護(hù),影響開發(fā)效率,同時也容易出現(xiàn)bug。有經(jīng)驗的開發(fā)者必定會對上面這段代碼進(jìn)行優(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

五、必要的設(shè)計模式

開發(fā)過程中不要一個鏈路寫到底,需要把某塊業(yè)務(wù)先想好,定位明確,該業(yè)務(wù)是應(yīng)該屬于哪一塊,哪一類業(yè)務(wù),后續(xù)可能會出現(xiàn)哪些方面的業(yè)務(wù)變動,適當(dāng)?shù)囊朐O(shè)計模式,那么多的設(shè)計模式,總有一個適合你當(dāng)時開發(fā)的場景;

設(shè)計模式的選取需要對該模塊的作用及定義清晰,多思考,多歸類,自然而然心中就有了合適的設(shè)計模式的考量。

六、必要的單元測試

做到每個方法單元測試,最好是全路徑覆蓋到每一條分支的單元測試,先從小的方法單元測試,底層的方法單元測試通過后,再通過postman或者其他工具來進(jìn)行對外API接口層面的測試,做到全路徑覆蓋的測試,往往開發(fā)人員有一個思維就是測試正常的業(yè)務(wù)流程,異常流程往往一概不考慮測試;然而出問題的都是那些異常的流程,單元測試需要遵守的原則如下:

  • 盡可能的全路徑覆蓋測試

  • 拋棄自己寫的代碼思維,當(dāng)一個小白進(jìn)行單元測試

  • 關(guān)注異常路徑的單元測試

  • 摒棄依賴思想,不要依賴聯(lián)調(diào)測試時間來進(jìn)行測試,往往你開發(fā)只管開發(fā),不管正確率,到后續(xù)測試聯(lián)調(diào)時間那就的瘋狂加班加點去趕進(jìn)度了,還不能保證最佳的產(chǎn)品質(zhì)量。

感謝各位的閱讀,以上就是“[Asp.Net Core]如何提高開發(fā)效率”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對[Asp.Net Core]如何提高開發(fā)效率這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI