CA1715:識別項名稱應該使用正確的前置字元
型別名稱 |
IdentifiersShouldHaveCorrectPrefix |
CheckId |
CA1715 |
分類 |
Microsoft.Naming |
中斷變更 |
中斷 - 對介面引發時 非中斷 - 在泛型型別參數上引發時。 |
原因
外部可見介面的名稱沒有以大寫 'I' 開頭。
-或-
外部可見型別或方法上泛型型別參數的名稱沒有以大寫 'T' 開頭。
規則描述
根據慣例,特定程式設計項目的名稱會以特定的前置字元做為開頭。
介面名稱必須以大寫的 'I' 做為開頭,後面跟著另一個大寫字母。 此規則會報告違規的介面名稱,例如 'MyInterface' 和 'IsolatedInterface'。
泛型型別參數名稱必須以大寫的 'T' 做為開頭,後面可以跟著另一個大寫字母。 這個規則會報告違規的泛型型別參數名稱,例如 'V' 和 'Type'。
命名慣例會為針對 Common Language Runtime 的程式庫提供通用的外觀。 如此可縮短新軟體程式庫的學習過程,並讓客戶深信程式庫是由學有專長的人員以不斷開發的 Managed 程式碼開發而成。
如何修正違規
請將識別項重新命名為具有正確前置字元的名稱。
隱藏警告的時機
請勿隱藏此規則的警告。
範例
下列範例示範命名錯誤的介面。
Imports System
Namespace Samples
Public Interface Book ' Violates this rule
ReadOnly Property Title() As String
Sub Read()
End Interface
End Namespace
using System;
namespace Samples
{
public interface Book // Violates this rule
{
string Title
{
get;
}
void Read();
}
}
using namespace System;
namespace Samples
{
public interface class Book // Violates this rule
{
property String^ Title
{
String^ get();
}
void Read();
};
}
下列範例會在介面使用前置詞 'I' 修正先前的違規。
Imports System
Namespace Samples
Public Interface IBook ' Fixes the violation by prefixing the interface with 'I'
ReadOnly Property Title() As String
Sub Read()
End Interface
End Namespace
using System;
namespace Samples
{
public interface IBook // Fixes the violation by prefixing the interface with 'I'
{
string Title
{
get;
}
void Read();
}
}
using namespace System;
namespace Samples
{
public interface class IBook // Fixes the violation by prefixing the interface with 'I'
{
property String^ Title
{
String^ get();
}
void Read();
};
}
下列範例示範命名錯誤的泛型型別參數。
Imports System
Namespace Samples
Public Class Collection(Of Item) ' Violates this rule
End Class
End Namespace
using System;
namespace Samples
{
public class Collection<Item> // Violates this rule
{
}
}
using namespace System;
namespace Samples
{
generic <typename Item> // Violates this rule
public ref class Collection
{
};
}
下列範例會在泛型型別參數使用前置詞 'T' 修正先前的違規。
Imports System
Namespace Samples
Public Class Collection(Of TItem) ' Fixes the violation by prefixing the generic type parameter with 'T'
End Class
End Namespace
using System;
namespace Samples
{
public class Collection<TItem> // Fixes the violation by prefixing the generic type parameter with 'T'
{
}
}
using namespace System;
namespace Samples
{
generic <typename TItem> // Fixes the violation by prefixing the generic type parameter with 'T'
public ref class Collection
{
};
}