学习C#的编码惯例

83 阅读6分钟

看一看C#的编码约定

本文概述了C#编程语言和.NET 框架的一套编码准则、设计原则和命名惯例。

它以易于阅读和理解的格式阐述了这些规则,使软件工程师能够快速应用这些规则。文章的目的是作为程序员的主要信息来源和效率。

编码惯例的好处

  • 它们使复制、改变和维护代码更容易。
  • 他们帮助读者更快地理解代码,允许他们根据先前的知识做出假设。
  • 它们给了代码一个统一的设计,所以读者可以集中精力在内容上而不是布局上。
  • 它们提供了使用C#编程语言的最理想方式。

在C#编程语言中使用的编码约定

在编写C#代码时,有一些命名惯例应该被遵守。所有关于公共元素的信息都适用于私有和受保护的内部元素,这些元素都应该对外部调用者可见。

在C#编程语言中使用的编码约定是。

  1. 命名约定
  2. 布局约定
  3. 注释惯例

命名惯例

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_prefixt_prefix 来表示静态字段。

public class DataService
{
    private static IWorkerQueue s_workerQueue;

    [ThreadStatic]
    private static TimeSpan t_timeSpan;
}

在执行大多数方法参数时,都使用了骆驼式的外壳。

public T SomeMethod<T>(int someNumber, bool isValid)
{
}

除了上述惯例外,还有其他一些惯例需要程序员在日常编程中考虑和应用。它们包括。

  1. 词的选择--使用可读的标识符名称,不应使用下划线、连字符和其他非字母数字字符。词的选择意味着在编程时不是任何词都可以使用,而是应该使用适当的词。

  2. 匈牙利语符号既不被接受也不被鼓励 - 匈牙利语符号是指变量或函数的名称表示其意图或种类,以及在某些语言中的类型。因此,它造成了编程语言的依赖性,使维护工作更加困难。

  3. 缩写和缩略语的使用 - 不要使用不被普遍认可的缩略语,即使它们被认可,也只在必要时使用。

  4. 缩写和缩略语不应作为标识符名称使用 - 这只是意味着当人们在写标识符时,不应缩略语,而应使用知名的标识符。

版面设计惯例

为了清楚地了解代码和它的结构,格式化作为一种编码惯例被行使。

一些布局编码惯例是:。

  • 使用代码编辑器的默认设置,使用智能缩进、四字缩进和保存为空格的制表符。

  • 每行应容纳一个语句,即// This is a comment for a single statement 。不合格的是,// This is a comment 1, This is another comment 。每一个注释都应该在一个声明中。

  • 每一行只能容纳一个声明,例如:varx=13 ;而不是var x=13var 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.

结论

总之,代码不仅是写出来的,而且是在严格的规则或标准下写出来的,使输出的结果更加正确,并能完成其任务。

以下是使用编码惯例实现的。

  1. 用户会把注意力放在内容上而不是布局上,因为你的代码会有一个一致的外观。

  2. 根据先前的经验,读者可能很容易理解你的代码。

  3. 代码变得更容易复制、更新和维护。

  4. 你为确保你的代码遵循Visual Basic的 "最佳实践 "做出了贡献。