首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Effective C# 原則 33:限制型別可視性 (上)

     編輯:關於C語言

預設 public 是反模式

Visual Studio 建立類別預設為 public,但大多數類別應為 internal。越低的可視性,未來修改系統時受影響範圍越小。

僅暴露必要介面

透過實作公用介面來降低類別可視性。.NET Framework 大量採用此模式:ArrayList 內含私有 ArrayListEnumerator 實作 IEnumerator,呼叫端僅知取得介面物件,不知具體型別。

public class ArrayList : IEnumerable
{
    private class ArrayListEnumerator : IEnumerator { ... }
    public IEnumerator GetEnumerator() => new ArrayListEnumerator(this);
}

私有列舉器優勢:可自由替換實作、無需 CLS 相容(非公用)、呼叫端不依賴實作細節。

internal 類別的實務應用

預設建立 internal 類別,僅在確須跨組件使用時才設為 public。透過介面暴露功能,可讓內部類別自由變動(參見原則 19)。

範例:電話驗證重構

原本 public class PhoneValidator 直接暴露驗證邏輯。重構為介面 + 內部實作類別,即可支援多種驗證規則而不擴大公開介面。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved