看一看C#的编码约定
本文概述了C#编程语言和.NET 框架的一套编码准则、设计原则和命名惯例。
它以易于阅读和理解的格式阐述了这些规则,使软件工程师能够快速应用这些规则。文章的目的是作为程序员的主要信息来源和效率。
编码惯例的好处
- 它们使复制、改变和维护代码更容易。
- 他们帮助读者更快地理解代码,允许他们根据先前的知识做出假设。
- 它们给了代码一个统一的设计,所以读者可以集中精力在内容上而不是布局上。
- 它们提供了使用C#编程语言的最理想方式。
在C#编程语言中使用的编码约定
在编写C#代码时,有一些命名惯例应该被遵守。所有关于公共元素的信息都适用于私有和受保护的内部元素,这些元素都应该对外部调用者可见。
在C#编程语言中使用的编码约定是。
- 命名约定
- 布局约定
- 注释惯例
命名惯例
Pascal的情况
在Pascal的情况下,每个词的第一个字母都是大写的,如下图所示。人们可以对有三个或更多字符的标识符使用帕斯卡大小写。
当命名一个类、记录或结构时,使用Pascal大小写("PascalCasing"),如下面的代码所示。
PublicSchool1
public class PascalCase1
{
}
public record PublicIntitution1(
string Country,
string County,
string Village,
);
public struct ValueCoordinate1
{
}
除了在名字前加一个I ,当命名一个接口时,使用pascal外壳。客户可以因为这个而知道这是一个用户界面。
public interface IPublicInstitution
{
}
除了已经有的,类型的公共成员也可以使用pascal大小写来命名。
public class PracticeExample1
{
// public field
public bool IsValid;
// An init-only property is a property that allows you to do something only once.
public IBuilding Building { get; init; }
// An example of an event
public event Action EventProcessing;
// Implementation of a method
public void StartEventProcessing()
{
// Use of a local function
static int CountQueueItems() => WorkerQueue.Count;
}
}
因为参数是记录的公共属性,所以读者在记下位置账户时可以使用pascal大小写。
public record PublicIntitution
(
string Country,
string County,
string Village,
);
骆驼案
camelCasing 惯例,用于参数名称,除了第一个字以外,每个字的第一个字母都要大写。
voidMain
骆驼字母大小写的另一个实现是在命名私有或内部字段时。
public class DataService
{
private IWorkerQueue _workerQueue;
}
在处理线程和内部字段时,最好也能分别使用s_prefix 和t_prefix 来表示静态字段。
public class DataService
{
private static IWorkerQueue s_workerQueue;
[ThreadStatic]
private static TimeSpan t_timeSpan;
}
在执行大多数方法参数时,都使用了骆驼式的外壳。
public T SomeMethod<T>(int someNumber, bool isValid)
{
}
除了上述惯例外,还有其他一些惯例需要程序员在日常编程中考虑和应用。它们包括。
-
词的选择--使用可读的标识符名称,不应使用下划线、连字符和其他非字母数字字符。词的选择意味着在编程时不是任何词都可以使用,而是应该使用适当的词。
-
匈牙利语符号既不被接受也不被鼓励 - 匈牙利语符号是指变量或函数的名称表示其意图或种类,以及在某些语言中的类型。因此,它造成了编程语言的依赖性,使维护工作更加困难。
-
缩写和缩略语的使用 - 不要使用不被普遍认可的缩略语,即使它们被认可,也只在必要时使用。
-
缩写和缩略语不应作为标识符名称使用 - 这只是意味着当人们在写标识符时,不应缩略语,而应使用知名的标识符。
版面设计惯例
为了清楚地了解代码和它的结构,格式化作为一种编码惯例被行使。
一些布局编码惯例是:。
-
使用代码编辑器的默认设置,使用智能缩进、四字缩进和保存为空格的制表符。
-
每行应容纳一个语句,即
// This is a comment for a single statement。不合格的是,// This is a comment 1, This is another comment。每一个注释都应该在一个声明中。 -
每一行只能容纳一个声明,例如:
varx=13;而不是var x=13。var y =14; -
如果续行没有相应的缩进,它们应该以一个制表符为单位缩进。
-
在属性定义和方法之间,至少要加一个空行。这样做是为了确保你的代码是干净整洁的,从而使它具有可读性。读者可以很容易地跟随你的代码,知道每一行的内容。
使用括号或小括号来使衔接中的规定清晰,如下面的代码所示。
if ((valxyz > valxyz) && (valabc > valabc))
{
// Here is what you will do.
}
注释的编码惯例
-
建议将注释写在单独的一行,以便于理解。
-
用大写字母开始注释也是明智的。
-
评论的内容应该以句号结束。
-
在注释分界符
//和注释内容之间最好也放一个空格,如下例所示。
// This is a comment used in the C-Sharp programming language.
// This is a single-line comment.
-
不建议使用格式化的星号块
*来包围评论。 -
请注意,所有公共成员都使用适当的XML评论来描述他们的行动。
看一下一些语言准则
字符串数据类型
为了将小的字符串端对端地连接起来,要使用字符串插值,正如下面的例子所解释的那样。
string displayDetails2 = $"{detailsList2[n].FullName}, {detailsList2[n].JobId}";
当处理大量的文本时,可以使用StringBuilder 对象在循环中附加字符串。
var phrase = "programmmmmmmmmmmmming";
var manyPhrases = new StringBuilder();
for (var j = 0; j < 1000; j++)
{
manyPhrases.Append(phrase);
}
带有宽松委托的事件处理程序
事件处理程序的参数(Object和EventArgs)不应该被明确限定,如果你不利用事件参数,可以使用放松的委托来代替事件参数。
以下面的例子为例。
(sender as Object, e As EventArgs)
无符号数据类型
使用int ,而不是一般的无符号类型。在C#中,int 被广泛使用,使得与其他库的交流变得容易。
数组
当在声明行初始化数组时,使用succinct 语法。让我们在下面的例子中使用string[] 。
string[] alphabets1 = { "u", "v", "w", "x", "y", "z" };
// You can use var if you utilize explicit instantiation.
var aplphabets2 = new string[] { "u", "v", "w", "x", "y", "z" };
如果你指定了一个数组的大小,那么元素应该被逐一初始化。
var alphabet3 = new string[5];
alphabet3[0] = "a";
alphabet3[1] = "b";
// And the process continues.
结论
总之,代码不仅是写出来的,而且是在严格的规则或标准下写出来的,使输出的结果更加正确,并能完成其任务。
以下是使用编码惯例实现的。
-
用户会把注意力放在内容上而不是布局上,因为你的代码会有一个一致的外观。
-
根据先前的经验,读者可能很容易理解你的代码。
-
代码变得更容易复制、更新和维护。
-
你为确保你的代码遵循Visual Basic的 "最佳实践 "做出了贡献。