作为一个参加工作近十年的“老鸟”,也是从“菜鸟”阶段被“老鸟”虐过来。最近这些年带了不少部门里面的新人,新人嘛难免缺乏经验,写出的代码难免有不合理之处,接下来本系列将介绍一些不合理的代码,以及如何优化。废话不多说,开撸。。。
c#是一门严谨的语言,他会对程序员的编写进行有力的强约束,绝无其它弱类型语言中“模棱两可的概念”。所以变量声明也要本着严谨的原则。
c#常用的命名规则
驼峰式命名方法(Camel-Case),共有两种方式。
(1)小驼峰命名法
第一个单词以小写字母开始,第二个单词的首写字母大写,如:firstName、studentId
(2)大驼峰命名法
每一个单词的首字母都大写,也成为Pascal命名法。如:FirstName、StudentId
例:
小驼峰
bool stopFlag = true;
int mumAge = 40;
string[] studentsArray = {"土跟","钢蛋","铁柱"};
大驼峰
public string GetName();
public void SetAge();
public void Select();
接下来我们谈谈如何取名,不要小看取名这是最、最、最重要的。
例:
定义一个家庭类,包含父母孩子的名字、性别、年龄信息
错误示范
public class Family
{
public string Name1="建国";
public int Age1= 54;
public Sex sex1 = Sex.Male;
public string Name2="雨姗";
public int Age2= 26;
public Sex sex2 = Sex.Female;
public string Name3="紫萱";
public int Age3= 2;
public Sex sex3 = Sex.Female;
}
咳咳,请告诉我哪个是爸爸,哪个是妈妈,哪个是孩子。
大家都很忙不要让我猜,猜对了还好,猜错了可能会乱伦。
正确做法
命名见名知意,减少歧义,减少误会。
public class Family
{
public string FatherName="建国";
public int FatherAge= 54;
public Sex FatherSex = Sex.Male;
public string MotherName="雨姗";
public int MotherAge= 26;
public Sex MotherSex = Sex.Female;
public string DaughterName ="紫萱";
public int DaughterAge= 2;
public Sex DaughterSex = Sex.Female;
}
取变量名是给程序员看的,编译器并不会在乎你用什么变量名,所以最重要的是人看得懂。
例:
定义一个飞机类,包含以下属性。
襟翼,副翼,前缘襟翼,水平尾翼,垂直尾翼,双涡扇发动机。
我相信很多程序员对这些专业的名词翻译并不了解,所以大家不要强行翻译为英文,
以免歧义,对于此种情况,我建议宁可使用全拼,也不使用半吊子英文。
public class Plane
{
public string JinYi =string.Empty;
public string FuYi =string.Empty;
public string QianYuanJinYi =string.Empty;
public string ShuiPinWeiYi =string.Empty;
public string ChuiZhiWeiYi =string.Empty;
public string WoShanFaDongJi =string.Empty;
}
相信大家都读的懂。
//服务器地址
public string SevAds = "192.168.1.108";
//端口
public string prt = "80";
//写成这样是不更好些呢?
public string ServerAddress = "192.168.1.108";
public string Port = "80";
//这个是我在实际工作中遇到过的情况
//功能1:购货单位首营登记
//功能2:供货单位首营登记
//相信没有人能说出他的英文翻译,公司的实习生懒得定义太长的变量名,于是:
//购货单位首营登记
public void GHDWSYDJ();
//供货单位首营登记
public void GHDWSYDJ();
//what?一模一样?这就是缩写一大缺点之一。
//建议做法
public void GouHuoDanWeiShouYingDengJi();
public void GongHuoDanWeiShouYingDengJi();
//虽然名字很长,但是有良好的可读性
//发票冲红
public void InvoiceChongHong(Guid invoice);
//发票冲红是中国的专用术语,也许很难翻译,可以考虑使用全拼,减少误会
public void FaPiaoChongHong(Guid invoice);
//错误做法
long tel = 15144388228;
//这个错误应该很多人都不会再犯,大家都明白电话号码,long、int毫无意义
string tel = "15144388228";
//错误做法
string date="1991-02-10";
//这个错误依然很多人都不会再犯,新手级别。datatime处理时间要比string强大一万倍
DateTime date = DateTime.Parse("1991-02-10");
//0 1表示男女固然没错,但性别只有两个值,int有无数个值,
//如果出现0 1以外的值则可能出现意外的错误。
//这么做虽然没有错误,但是有更好的办法
int sex = 0
//而枚举最试用这种情况。
Sex sex = Sex.Female;
//错误做法
//no,no,no永远不要这么做
//guid如果声明为string如果涉及到比较的话,需要忽略大小写
//运算复杂不说,如果忘记忽略大小写,程序一定会遇到bug
string id = "F2C1DA37-4E9B-4152-AD2B-159522BC8BCE";
//正确做法
Guid id = Guid.NewGuid();
//错误做法
double price = 10.5;
float price = 10.5f;
//正确做法
//c#中定义了货币类型,他的精度超过float,double,甚至不同其他类型自动转换,
//微软做这些是为了安全考虑,double、float、decimal更多区别大家可以自行百度
decimal price = 10.5m;
//错误做法
//虽然这么用毫无问题,但是难免大材小用。decimal只是为了作为货币类型。
decimal height = 1.72;
//正确做法
double height = 1.72;
//错误做法
//许多人为了方便将单个字符声明为string,
//相比于string,char更为合适。string本质
//为char数组,自然单个字符生命为char效率更高
string a = "a";
string b = "b";
string c = "c";
string d = "d";
//正确做法
char a = 'a';
char b = 'b';
char c = 'c';
char d = 'd';
感谢大家花时间看我的文章,下期我们介绍如何写if else