如何写出优雅漂亮的c#代码_变量(一)

作为一个参加工作近十年的“老鸟”,也是从“菜鸟”阶段被“老鸟”虐过来。最近这些年带了不少部门里面的新人,新人嘛难免缺乏经验,写出的代码难免有不合理之处,接下来本系列将介绍一些不合理的代码,以及如何优化。废话不多说,开撸。。。

1.变量声明及命名

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();

接下来我们谈谈如何取名,不要小看取名这是最、最、最重要的。

  1. 变量命名最重要的:见名知意

例:
定义一个家庭类,包含父母孩子的名字、性别、年龄信息

错误示范

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;
	
}
  1. 不必执着于使用英文

取变量名是给程序员看的,编译器并不会在乎你用什么变量名,所以最重要的是人看得懂。

例:
定义一个飞机类,包含以下属性。
襟翼,副翼,前缘襟翼,水平尾翼,垂直尾翼,双涡扇发动机。
我相信很多程序员对这些专业的名词翻译并不了解,所以大家不要强行翻译为英文,
以免歧义,对于此种情况,我建议宁可使用全拼,也不使用半吊子英文。

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;
}

相信大家都读的懂。

  1. 尽量避免缩写
//服务器地址
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();
//虽然名字很长,但是有良好的可读性

  1. 中英文混合,坚决不予许
//发票冲红
public void InvoiceChongHong(Guid invoice);

//发票冲红是中国的专用术语,也许很难翻译,可以考虑使用全拼,减少误会
public void FaPiaoChongHong(Guid invoice);

2.想写出漂亮的代码也需要正确数据类型

 		    //错误做法
            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

你可能感兴趣的:(c#)