公交车上荫蒂添的好舒服的电影-公用玩物(np双xing总受)-公用小荡货芊芊-公与妇仑乱hd-攻把受做哭边走边肉楼梯play-古装一级淫片a免费播放口

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

編寫干凈的C#代碼技巧

admin
2024年1月8日 19:29 本文熱度 1153

介紹

在當今時代,編寫代碼并不困難。然而,編寫干凈且可伸縮的代碼并不容易。在本文中,我們將討論一些為我們的項目編寫干凈C#代碼的技巧。乍一看,任何以前從未見過您的代碼的開發(fā)人員都必須盡可能地理解它,它幫助我們更好地理解代碼。

下面是編寫干凈C#代碼的一些重要技巧。

使用好的IDE

首先,為您的技術(shù)堆棧選擇最好的IDE。在我們的例子中,Visual Studio是C#最流行、最好的IDE之一。它是微軟可靠的、完全的產(chǎn)品。一些開發(fā)人員也喜歡Rider IDE(付費)。使用這些IDE可以確保代碼保持整潔。Visual Studio有相當穩(wěn)定的智能感知特性,可以糾正和建議代碼中的更改。

使用有意義的名字

命名變量可能是整個軟件開發(fā)生命周期中最困難的部分。為變量和方法想一個有意義的名稱是非常耗時的。但是跳過這個過程并隨機命名也不是一個好主意,不是嗎?

不建議寫法

int d;

這是命名變量最簡單的方法,對吧?但是不要這樣做。一個好的名稱可以幫助其他開發(fā)人員理解變量/方法的上下文和用法。下面是您想要命名變量的方式。

建議寫法

int daysToAppocalypse;

使用駱駝/帕斯卡大小寫符號

除了為變量選擇一個合適的名稱外,還要維護您編寫名稱的方式。理想情況下,我們使用駱駝大小寫和Pascal大小寫表示法作為最佳代碼實踐。不要在變量中使用隨機大寫字母。那看起來就是不漂亮!

駝峰式大小寫符號

基本上,變量的第一個單詞的第一個字母將是小寫的,后面每一個單詞的第一個字母應該是大寫的。在命名局部變量和方法參數(shù)時,必須使用這種符號。

不建議寫法

int RandomInteger;
string FirstName;

建議寫法

int randomInteger;
string firstName;

帕斯卡案例符號

這里,您所有單詞的首字母應該是大寫,我們使用這種符號來命名方法和類。

不建議寫法

class program        static void main(string[] args)             {                    Console.WriteLine("Hello World!");         }  }

建議寫法

class Program
   {
         static void Main(string[] args)
         {
              Console.WriteLine("Hello World!");
          }
    }

注意格式

對代碼進行格式化可以提高代碼的可讀性。制表符優(yōu)于空格,記得嗎?

class Program
{
  static void Main(string[] args)
  {
   Console.WriteLine("Hello World!");
  }
}

這個看起來怎么樣?很討厭,是嗎?現(xiàn)在,Visual Studio有一個內(nèi)置特性,可以完美地格式化代碼。要做到這一點,只需到相關(guān)的類中按CTRL + K和CTRL + d,看到了嗎?很酷,是嗎?

在需要的時候添加注釋

這是我們所有開發(fā)人員都討厭的事情,不是嗎?然而,從長遠來看,添加幾行評論/描述的方法確實能幫助你和其他開發(fā)人員。Visual Studio使它變得更加容易,只要在相關(guān)的方法上面輸入///,VS就會自動為您生成一個包含方法參數(shù)的注釋模板。

為什么這么酷?無論何時(從任何地方)調(diào)用這個方法,Visual Studio都會顯示您的注釋。相信我,這很有幫助。

P.S. 只有在情況需要的時候才添加評論。例如,當某個特定方法過于復雜,需要深入解釋時。在這種情況下,您需要添加注釋。記住,維護注釋也將成為一項任務,因此要有節(jié)制地使用注釋。

重用代碼

編寫可重用的代碼是非常重要的。它可以減少項目中的總代碼行數(shù),并提高效率。您不希望通過多個類復制粘貼一個函數(shù)。相反,您可以做的是創(chuàng)建一個共享庫項目,并在每個必需的項目中引用它。通過這種方式,我們構(gòu)建了可重用的函數(shù)。而且,如果需要進行任何修改,您只需要更改共享庫中的代碼,而不是在任何地方更改。

保持類盡可能小

根據(jù)Solid原則,您必須將類隔離為只有一個職責函數(shù)的小塊。這有助于我們實現(xiàn)松散耦合的代碼。確保您在查看類時不需要反復滾動。這可以是一個一般的經(jīng)驗法則。

使用設計模式

這可能是架構(gòu)師級別的開發(fā)人員需要做的事情。確定將哪種設計模式應用于哪種場景需要大量的經(jīng)驗。設計模式基本上是能夠在架構(gòu)解決方案時提供可重用解決方案的模式。

把您的解決方案組織好

你構(gòu)建結(jié)構(gòu)化的解決方案嗎?建立一個這樣的系統(tǒng)是非常令人滿意和重要的。下面是我遵循洋蔥架構(gòu)的一個解決方案。

在單個項目中仍然可以完成所有工作。但是,為了支持可伸縮性和松散耦合的解決方案,我們將它們分成不同的層,如應用程序、領域、基礎設施等。

這里還有一些其他的優(yōu)勢:

  • 可重用性——如果您想將同一個項目用于另一個解決方案,您可以這樣做。

  • 改進的安全性

  • 高度可維護的

  • 可伸縮的

  • 控制反轉(zhuǎn)等

避免魔法字符串/數(shù)字

什么是魔法字符串?它們是直接在應用程序代碼中指定的字符串,對應用程序的行為有直接影響。換句話說,不要在應用程序中使用硬編碼的字符串或值。當應用程序增長時,跟蹤這些字符串是很困難的。此外,這些字符串可以與某種外部引用相關(guān)聯(lián),如文件名、文件路徑、URL等。在這種情況下,當資源的位置發(fā)生變化時,必須更新所有這些神奇的字符串,否則應用程序?qū)⒅袛唷?紤]下面的例子:

if(userRole == "Admin")
{
    //logic here
}

你可以這樣寫:

const string ADMIN_ROLE = "Admin"
if(userRole == ADMIN_ROLE )
{
    //logic here
}

或者,您也可以為用戶角色創(chuàng)建枚舉并簡單地使用它。這是一種更簡潔的編寫代碼的方式。

刪除未使用的代碼

通常會有注釋掉未使用代碼的做法,這最終會增加應用程序編譯時的代碼行數(shù)。你不應該這樣做。您可以使用像Git這樣的源控件來確保您可以在任何時候恢復。寧愿使用Git而不是注釋掉代碼。

使用方法鏈接

這是Microsoft在默認生成代碼中廣泛使用的一種常見技術(shù)。在這里,每個方法返回一個對象,這些函數(shù)將被鏈接在一起。認識嗎?這是方法鏈接的一個很好的例子。

services.AddHealthChecks().AddSqlServer(_configuration.GetConnectionString("DefaultConnection"));

下面是一個詳細的例子。我們有一個student類和另一個創(chuàng)建并返回數(shù)據(jù)填充student對象的隨機方法

public class Student   
{  
   public string Name { get; set; }  
   public int Age { get; set; }  
}  
public Student SomeMethod()  
{  
   Student testStudent = new Student();  
   testStudent.Name = "Jay Krishna Reddy";  
   testStudent.Age = 25;  
   return testStudent;  
}

對我們開發(fā)人員來說,設置Student對象的值可能不是問題。但是,讓我們假設一個單元測試開發(fā)人員必須在您的類上進行測試,并且實際上沒有C#,或者您想通過簡化整個過程來取悅您的客戶。這就是連貫接口的用武之地。創(chuàng)建一個新的連貫類,如下所示:

public class StudentFluent   
{  
   private Student student = new Student();  
   public StudentFluent AddName(string name)  
   {  
       student.Name = name;  
       return this;  
   }  
   public StudentFluent AddAge(int age)  
   {  
       student.Age = age;  
       return this;  
   }  
}  
public StudentFluent SomeMethod()  
{  
   return new StudentFluent().AddName("Jay Krishna Reddy").AddAge(25);  
}

這很有意義,并且在一個全新的層次上提高了可讀性,對嗎?方法鏈接的另一個簡單例子如下:

public string AnotherMethod()   
{  
   string name = "Jay Krishna";  
   return name.Replace("J", "A").Replace("A", "J").Replace(".", string.Empty);  
}

使用異步/等待

異步編程是最好的選擇!異步編程在處理需要一些時間才能完成計算的函數(shù)時,有助于提高總體效率。在這樣的函數(shù)執(zhí)行期間,對于最終用戶來說,整個應用程序似乎是凍結(jié)的。這導致了糟糕的用戶體驗。在這種情況下,我們使用異步方法來釋放主線程。

不要在catch塊使用Throw ex

您確實不希望只是在捕獲異常并丟失堆棧跟蹤數(shù)據(jù)后對其進行“throw ex”。只需使用“throw”即可。通過使用此方法,您還可以存儲堆棧跟蹤,這對于診斷很重要。

不建議寫法

try   
{  
   // Do something..  
}  
catch (Exception ex)  
{  
   throw ex;  
}

建議寫法


try  
{  
   // Do something..  
}  
catch (Exception ex)  
{  
   throw;  
}

使用三元運算符

考慮下面的例子,我相信你們很多人仍然在遵循這一做法。

public string SomeMethod(int value)   
{  
   if(value == 10)  
   {  
       return "Value is 10";  
   }  
   else  
   {  
       return "Value is not 10";  
   }  
}

但如果有更好更清潔的方法呢?引入三元操作符。

現(xiàn)在我們之前寫的多行代碼可以使用三元運算符縮減為一行,您可以開始想象這將節(jié)省多少行代碼!


public string SomeMethod(int value)  
{  
   return value == 10 ? "Value is 10" : "Value is not 10";  
}

使用Null合并操作符

類似地,我們還有另一個操作符,可以在進行null檢查時派上用場。??這個操作符在C#中稱為Null合并操作符。

考慮另一個例子,下面是一個接受Student對象作為參數(shù)并檢查空對象的小函數(shù)。如果為空,返回一個帶有數(shù)據(jù)的新對象,否則返回相同的對象。

public Student SomeMethod(Student student)   
{  
   if (student != null)  
   {  
       return student;  
   }  
   else  
   {  
       return new Student() { Name = "Jay Krishna Reddy" };  
   }  
}

讓我們添加操作符并縮小這個函數(shù)!

public Student SomeMethod(Student student)   
{  
   return student ?? new Student() { Name = "Jay Krishna Reddy" };  
}

首選字符串插值

每次您要向字符串添加動態(tài)值時,我們都傾向于使用復合格式或僅使用加號將其添加。

public string SomeMethod(Student student)   
{  
   return "Student Name is " + student.Name + ". Age is " + student.Age;  
}

從C# 6開始,引入了String Interpolation功能。這提供了一種更具可讀性和涼爽性的語法來創(chuàng)建格式化的字符串。這是使用內(nèi)插字符串的方法。


 public string SomeMethod(Student student)  
{  
   return $"Student Name is {student.Name}. Age is {student.Age}";  
}

使用表達體法

這樣的方法用于方法體甚至比方法定義本身小得多的場景中。為什么要浪費括號和代碼行呢?下面是編寫表達式體方法的方法。


public string Message() => "Hello World!";

避免太多參數(shù)

太多的參數(shù)總是一場噩夢。如果你傾向于有超過3個參數(shù)輸入到任何方法,為什么不把它包裝到一個請求對象或其他東西,然后傳遞?讓我們看一個小例子。

public Student SomeMethod(string name, string city, int age, string section, DateTime dateOfBirth)   
{  
   return new Student()  
       Age = age,  
       Name = name,  
       //Other parameters too  
   };  
}

你可能希望它是這樣的。


public Student SomeMethod(Student student)  
{  
   return student;  
}

不要忽略捕捉到的錯誤

這是我一直在做的事情。你們很多人很有可能也會這樣做。我們添加了一個try-catch塊并忽略了錯誤處理,對嗎?處理此類錯誤并將其記錄到表或磁盤是一種很好的實踐。

public void SomeMethod()   
{  
   try  
   {  
       DoSomething();  
   }  
   catch  
   {  


   }  
}  
public void SomeMethod()  
{  
   try  
   {  
       DoSomething();  
   }  
   catch (Exception ex)  
   {  
       LogItSomewhere(ex);  
   }  
}   


該文章在 2024/1/9 10:33:54 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務費用、相關(guān)報表等業(yè)務管理,結(jié)合碼頭的業(yè)務特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国产人妖一区二区在线观看 | 国产人妻少妇 | 经典无码在线免费看 | 国产精品v欧美精 | 97精品国产自在现线免费观看 | 国产精品成人va在线观看软件 | 国产无码精品一区二区三区 | 国产欧美日韩专区发布 | 国产区图片区小说区亚洲区 | 国产一区视频在线播放 | 国产亚洲日韩在线播放人成 | 国产精品高跟丝袜一区 | 国产成人午夜福利电影在线播放 | 18禁日韩黄色网 | 91精品国产麻豆福利在线 | 国产亚洲欧美在线播放网站 | 国产高清一区二区三区四区五区 | 国产在线精品一区二区在线 | 精品少妇人妻av无码久久 | 超大乳抖乳露双乳呻吟 | 加勒比中文无码字幕 | 国产女人喷潮在线观看视频一 | 精品人妻一卡二卡三卡 | 国产呦交精品免费视频 | 国产成人精品三 | 国产精品爆乳奶水 | 国产午夜精品影院 | 1024国产精品视频一区 | 国产精品乱人伦一区二区三区 | 国产无码专区精品 | 国产91久久精品久久精品 | av色欲无码人妻中文字幕 | 国产午夜男女爽爽爽爽爽视频 | 国产精品亚洲久久久久 | 国产色精品vr一区区三区 | 国产精品www | 国产免费无码一区二区三区 | 高清无码在国产极 | 国产自愉自愉免费24区 | 国产高清在线精品一区二区三区 | 国产午夜精品久久理论片小 |