在说代码规范之前我们先了解一下什么是规范,规范意指符合逻辑,客观、真实、全面。明文规定或约定俗成的标准。我们今天要分享的代码规范则是程序员在编写代码时要遵循的符合逻辑,约定俗成的标准。
一、为什么要有代码规范?
作为小白级别的程序员,我们在刚开始编写代码时往往不知道要从何下手,就像我们第一次敲百例一样,我们并不知道代码的逻辑是什么,我们第一步做的是站在巨人的肩膀上,看别人的代码学习。之后随着学习的深入我们开始自己编写一些代码,自己写程序,然后开始组团队一起编写代码,逐渐发现我们要经常看别人的代码。那么问题就出现了,如果我们所看的代码是按照统一的规范来编写的,并且我们也了解编写的规范,那么看起来是不是会很顺心,效率很高啊,反之,如果我们看的代码,都是编写人员随意命名的,变量都是缩写,那我们肯定没有心情看下去了,但如果是非看不可的代码,如交接代码,那我们肯定是要骂人了。
二、代码规范的宗旨是什么?
代码规范的宗旨就一条,那就是让人看得懂,看得方便。
三、代码规范都有哪些?
1、注释:
注释分为三种:
单行注释:双斜杠 //
MessageBox.Show(ex.Message); //用户输入错误信息后提示
多行注释:以 “/*” 为开头 以 “*/” 结尾对多行代码进行注释
/*
注释的内容
*/
代码块注释:三斜杠 ///,用来具体标注代码块的用途,参数和返回值。
/// <summary>
/// 验证使用者用户是否存在
/// </summary>
/// <param name="values">验证的ID</param>
public void CheckID(params object[] values)
{
IDALUser idal;
UserFactory fact = new UserFactory();
UserInfoEntity user = new UserInfoEntity();
user.Id = Convert.ToInt32(values[0]);
idal = fact.User(); //实例化用户DAL层
if (idal.SelectUserInfo(user).Count == 0) //判断是否有该用户
{
throw new Exception("没有该用户");
}
}
快速注释代码的快捷键:ctrl+k+c
快速取消注释的快捷键:ctrl+k+u
2、命名
我们常用的两种命名方式:Camel(驼峰)命名,Pascal(帕斯克)命名。
Camel:第一个单词的首字母小写,后面的单词首字母大写。
Pascal:每个单词的首字母均大写。
①、为什么命名要统一标准?
请问,如果我将方法写成Usernameinputwrapincomment,你知道我要表达什么吗,可读性很绝望有没有。
如果我改用Camel或Pascal
userNameInputWrapIncomment、UserNameInputWrapIncomment
②、什么时候用Camel,什么时候用Pascal?
在C#中变量、字段、参数采用Camel命名
变量:
RestrictedInput limt = new RestrictedInput(); //实例化限制类
字段:
private string userName;
参数:
private void txtName_KeyPress(object sender, KeyPressEventArgs e)
{
limt.InputNumBs(e); //限制类调取只能输入数字的方法
}
在C#中类名、方法名、属性采用Pascal命名
类名:
public partial class ManagerLoginForm : Form
{
}
方法名:
public void Check(params object[] values)
{
foreach (string obj in values) //遍历values的值,判断是否为空
{
if (obj == "") //如果文本为空
{
throw new Exception("请将信息填写完整"); //抛出提示信息
}
}
}
属性:
public string UserName
{
get
{
return _userName;
}
set
{
_userName = value;
}
}
注:C#中的常量不采用以上两种命名方式,而是所有字母大写的方式进行命名。
③、常量的命名
常量的命名规则与变量和方法有些许不同,常量的命名:每个单词的每个字母均大写,单词之间通过下划线分隔
例如:READ_KEY
3、缩写
所有的代码中只有一个地方可以用缩写,其他地方都禁止使用缩写。
for循环中的i变量,i++,i--可以用缩写,其他地方都禁止使用缩写。
4、分层中的类名命名
我们在编写程序时,少则分为三层,在每层的类命名中,除类名采用Pascal命名之外,还需要在类名后面加上对应的层标识。
例如:
BLL层:BasicDataBLL
DAL层:BasicDataDAL
Entity层:BasicDataEntity(注:实体作为参数使用时,前面需要加en标识)
5、数据库表名命名
数据库表名采用T_表名的方式进行命名,表名首字母大写。
6、小括号与关键字的间隔
小伙号与关键字中间要有空格作为间隔,提高可阅读性。
7、版本号的小秘密
我们经常看到V1.00,V1.01,V1.10,V2.00,那你们知道他们当中的区别是什么么,每个位置代码了什么具体含义呢?
小数点前一位代表的是全局变化,即代码大变动的迭代。
小数点后第一位代表的是在原基础上添加功能的迭代。
小数点后第二位代表局部修改或bug修改的迭代。