后端编码规范
要作为一名合格的开发者,最基本的素质就是要做到编码规范。从小我们就接受教导"字如其人",而写代码亦是如此。良好的代码风格,彰显了 个人的工作素养。良好的代码规范,能够帮助我们进行更好的团队协作:
- 方便代码的交流和维护
- 不影响编码的效率,不与大众习惯冲突
- 使代码更美观、阅读更方便
- 使代码的逻辑更清晰、更易于理解
规范目的
一个软件的生命周期中,80%的花费在于维护。几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护。
编码规范的核心价值在于:
- 改善软件的可读性,让程序员尽快而彻底地理解新的代码
- 使应用程序的结构和编码风格标准化,便于团队协作和知识传承
- 使源代码严谨、可读性强且意义清楚
- 与其它语言约定相一致,并且尽可能直观
为了充分发挥编码规范的价值,每个软件开发人员必须一致遵守编码规范。
高质量的代码特质
高质量的代码应该具备以下核心特质:
- 易懂性:代码必须易读且简单明确,能够展示出重点所在。代码应该易于重用,不包含多余代码,并附带相应文档说明。
- 正确性:代码必须正确实现其预期功能,经过充分测试,可以按照文档描述进行编译和正确运行。
- 一致性:代码应该遵循统一的编程风格和设计原则,确保不同代码之间风格一致,便于团队协作和维护。一致性体现了对细节 的追求,传递了代码库的优良品质。
- 流行性:代码应当采用现代编程实践,如使用Unicode、错误处理、防御式编程以及可移植性设计。使用当下推荐的运行时库、API函数和项目设置。
- 可靠性:代码必须符合法律法规、隐私政策和安全标准。避免展示入侵性或低质量的编程实践,确保安装和执行过程可撤销,不永久改变机器状态。
- 安全性:代码应该展示安全编程实践,如遵循最低权限原则、使用运行时库函数的安全版本,以及采用SDL(安全开发生命周期)推荐的项目设置。
合理运用编程实践、设计模式和语言特性,是实现上述代码特质的关键。
基本代码格式
缩进
规则:所有代码都应使用4个空格来表示缩进,严禁使用制表符。
原因:不同的编辑器会使用不同数量的空格来显示制表符,这会导致代码格式混乱,降低可读性。
建议:配置Visual Studio文字编辑器,启用"以空格代替制表符"选项。
花括号
花括号⼀定独占⼀⾏。关于花括号的格式问题,也是很多⼈争论的点,有些⼈习惯于Java的左花括号跟在圆括号后⾯,但微软官⽅推荐的是花括号应该独占⼀⾏,不与任何语句并列⼀⾏。
左花括号 "{" 放于关键字或⽅法名的下⼀⾏并与之对⻬。左花括号 "{" 要与相应的右花括号 "}"对⻬。
错误的示范:
public static void Main(string[] args) { }
正确示例:
public static void Main(string[] args)
{
}
特殊要求:if、while、do语句后必须使用 {},即使 {} 中为空或只有一条语句。
示例:
if (somevalue == 1)
{
somevalue = 2;
}
建议:右花括号 } 后建议添加注释,便于找到与之对应的左花括号。
示例:
{
while(1)
{
if(valid)
{
} // if valid
else
{
} // not valid
} // end forever
}
例外情况:类的自动属性花括号可与代码合占一行
示例:
public string Name { get; set; }
using排序
引⼊的命名空间应该按照字⺟⾳序排列,这样做的⽬的在于⽅便在引⼊的多个命名空间中直接快速的找到命名空间。
换⾏
当表达式超出或即将超出显示器⼀⾏显示范围的时候,遵 循以下规则进⾏换⾏:
- 在逗号后换⾏。
- 在操作符前换⾏。
规则1优先于规则2。
当以上规则会导致代码混乱的时候⾃⼰采取更灵活的换⾏规则。
空⾏
目的:空行用于将逻辑上相关联的代码分块,提高代码的可阅读性。
使用两个空行的情况:
- 当接口和类定义在同一文件中时,接口和类的定义之间
- 当枚举和类定义在同一文件中时,枚举和类的定义之间
- 当多个类定义在同一文件中时,类与类的定义之间
使用一个空行的情况:
- 方法与方法、属性与属性之间
- 方法中变量声明与语句之间
- 方法中不同的逻辑块之间
- 方法中的返回语句与其他语句之间
- 属性与方法、属性与字段、方法与字段之间
- 语句控制块之后,如if、for、while、switch
- 注释与它注释的语句间不换行,但与其他语句间空一行
空格
规则:在以下情况中需要使用空格:
-
关键字和左括符
(之间应使用空格隔开。如:while (true)注意:方法名和左括符
(之间不要使用空格,这样有助于辨认代码中的方法调用与关键字。 -
多个参数用逗号隔开时,每个逗号后都应加一个空格
-
除了
.之外,所有的二元操作符都应使用空格与它们的操作数隔开- 一元操作符、
++及--与操作数间不需要空格
- 一元操作符、
-
语句中的表达式之间用空格隔开。如:
for (expr1; expr2; expr3)
示例:
a += c + d;
a = (a + b) / (c * d);
while (d++ == s++)
{
n++;
}
PrintSize("size is " + size + "\n");