IRONSOFTWAREHOME

14種簡化您的C#程式碼的方法 - Tim Corey影片中的C#最佳實踐資訊

14 Ways to Simplify Your C# Code

Tim Corey

44m 57s

在他的全面影片"簡化您的C#程式碼的14種方法"中,Tim Corey 探討了可以提高程式碼可讀性、減少混亂並保持程式碼基礎可維護的實用C#最佳實踐。 Tim集中於良好的編碼習慣,而不是對一行程式或神祕技巧的痴迷——如何編寫乾淨、易於理解的程式碼,以便其他開發者能夠跟隨。

他以Visual Studio中的真實例子為基礎構建每個技巧,並涵蓋命名慣例、錯誤處理,甚至如何重構程式碼而不破壞內容。 這不僅僅是理論——這是關於實踐使程式碼變得更好。

在這篇文章中,讓我們逐步了解他展示的14種方法。

1. 使用Static以獲得更乾淨的程式碼

Tim首先展示如何透過static存取來簡化重複調用。 通過聲明:

using static System.Console;

您不再需要為每個static成員加上Console前綴。

這不僅僅是去掉字詞——它關乎讓static存取物件更加清晰。 Tim指出,如果您正在調用像Console或Math這樣經常使用的類中定義的static成員,這種簡寫可以提高程式碼可讀性。

然而,作為良好編程實踐的一部分,他警告開發者應避免衝突——兩個不同的類可能具有相同名稱的static成員。 意識到潛在的意外行為是關鍵。

2. 使用List初始化

C# 現在讓您能夠更直接地初始化列表:

List<string> names = ["Tim", "Sue", "Bilbo"];

Tim解釋這不僅僅是將所有內容壓縮為一條語句——這涉及編寫更易於閱讀的程式碼,並通過減少繁文縟節來提升性能。

讀者不必解析出"new List of String"的樣板語句,可以直接看到重要的內容:集合中的描述性名稱。 Tim 也指出這對陣列甚至是字典同樣適用,與優先考慮清晰度的編碼慣例一致。

3. 目標型別的新

另一個時間節省者:目標型別的新。 代替:

List<int> numbers = new List<int>();

您可以編寫:

List<int> numbers = new();

Tim強調重複類名是沒有必要的——它已經在左側。這遵循良好的編程實踐,通過消除冗余使您的程式碼基礎更容易掃描。

4. var 和匿名型別

Tim探討了var,這是一個在編碼實踐圈中引發爭論的功能。 有些人不喜歡它因為它會隱藏變數名稱和型別,但Tim澄清其真正的力量在於匿名型別。

當與資料源(如透過Dapper的SQL)一起工作時,Tim展示了如何透過var即時建立物件:

var parameters = new { FirstName = "Tim", LastName = "Corey" };

這非常適合編寫查詢或臨時物件——您不需要僅為參數建立一個基類。 正如Tim所說,這避免了用不必要的型別污染您的程式碼基礎,同時如果出現問題仍提供有意義的錯誤訊息。

5. 文件限定的命名空間

Tim轉向文件範圍的命名空間,顯示如何這樣做:

namespace ProjectName
{
    // indented code
}

成為這樣:

namespace ProjectName;

這一小變化消除了浪費的縮排,並遵循C#命名慣例,如公共成員的Pascal命名法。 Tim解釋說由於大多數文件只包含一個命名空間,這提高了程式碼的可讀性並保持邏輯部分的對齊。

6. 用於一行資料結構的記錄

使用記錄可以讓您只用一句話來定義資料物件:

public record EmployeeRecord(int Id, string Name);

Tim 指出這生成了一個完整的型別——屬性、不可變性和 ToString()——只需極少的努力。 他清晰地表示衍生類情況仍需要類,但當您的物件是只讀的時,記錄按單一責任原則運作,把一件事做好。

7. 模式匹配

Tim演示了模式匹配如何幫助您安全地處理異常和執行比較。 代替編寫冗長的型別檢查,您可以將它們結合在一起:

if (emp is EmployeeRecord e)
{
    e.Id = 1;
}

這條單行檢查和轉型。 Tim 說這項內容符合良好的編程實踐——避免使用像x或y這樣的單字母變數名,而是給予像e這樣的描述性名稱。 清晰的方法名稱和變數名稱使其他開發者更容易維護程式碼。

8. 字串插值

為了構建易讀的字串,Tim 演示了字串插值:

$"The employee with ID {e.Id} is {e.Name}"

他指出這使有意義的錯誤訊息和編寫評論更容易。 不再是拼接的糾結,您可以像英語一樣寫出可以閱讀的程式碼——提高程式碼質量並簡化檢查輸出的未來單元測試。

9. 使用nameof()進行安全重構

Tim展示了nameof()如何在您重構程式碼時保護您。 字串中的硬編碼變數名如果重新命名可能導致意外行為。 但是透過編寫:

nameof(emp)

編譯器會自動更新每一個用法。 這是保持程式碼基礎健康的最佳實施之一,通過編寫乾淨程式碼並進行重新組織。

10. 使用元組的多重返回值

與其為了返回兩個值而建立一個基類,Tim使用元組:

(string FirstName, string LastName) SplitName(string fullName)

這避免了不必要的外部依賴並遵循單一責任原則——該方法只是拆分一個名稱,沒有更多。 正如Tim所言,當您避免過度設計時,實踐讓程式碼變得更好。

11. 解構

基於元組的基礎,Tim展示了如何將結果解構為局部變數:

var (firstName, lastName) = SplitName("Tim Corey");

這令變數名稱具描述性,並避免了後來神祕的元組語法。 Tim甚至談到了丟棄未使用的值(使用_),這表明了一種意圖——沒有未解釋的單字母變數名留下。

12. 丟棄不需要的值

如果您不需要所有的元組部件,Tim建議丟棄:

var (firstName, _) = SplitName("Tim Corey");

這表明其他開發者您正有意地忽略一個值——這對於測試框架或單元測試中並非所有輸出都重要的情況特別有用。

13. 無區域的使用語句

Tim進入資源管理和錯誤處理。 之前,您會編寫:

using (var connection = new SqlConnection(connString))
{
    // work
}

現在,您可以使用:

using var connection = new SqlConnection(connString);

這與SOLID原則一致——尤其是單一責任原則和依賴倒置原則。 Tim指出,這種語法適用於外部依賴如資料庫,確保大部分異常處理更乾淨並且連接總是關閉,避免性能問題或甚至是當連接未被釋放時可能發生的SQL注入情況。

14. 行內out變數聲明

最後,Tim介紹內聯out變數聲明的話題,例如解析:

if (int.TryParse(numberText, out int numberValue))

在此,您在同一行中建立局部變數。 這使編碼慣例更加緊密,方法名稱更具描述性。 透過將程式碼適當分組,您減少意外行為並增加未來重構程式碼工作的安全性。

總結

Tim 在他的影片中結束時提醒觀眾:這些簡化方法並不是要寫出晦澀的一行語句——而是關於良好的編程習慣。 像static使用、記錄、模式匹配、元組以及丟棄這樣的功能讓您可以編寫出乾淨、現代的C#。

他鼓勵開發者在採用這些特性的同時考慮命名慣例、錯誤處理和有意義的名稱。 "程式碼是給人看的,"Tim 說——當您寫出易於理解的程式碼時,您不僅改善了自己的生活,還改善了其他開發者的生活。

簡而言之:擁抱這些C#的最佳實踐,遵循單一責任原則、介面隔離原則和依賴倒置原則等SOLID原則,這樣您的程式碼不僅會編譯——它還將提高性能,減少意外行為,並保持您的團隊對編寫程式碼的熱愛。

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

立即免費取得 30 天試用金鑰

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

OR
bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
獲取您的無義務諮詢
填寫以下表格或發送電子郵件至sales@ironsoftware.com
您的詳細資訊將始終保密。
被全球數百萬工程師信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立