如何写出优雅漂亮的c#代码(一)
作为一个参加工作近十年的“老鸟”,也是从“菜鸟”阶段被“老鸟”虐过来。最近这些年带了不少部门里面的新人,新人嘛难免缺乏经验,写出的代码难免有不合理之处,接下来本系列将介绍一些不合理的代码,以及如何优化。废话不多说,开撸。。。
- 变量声明及命名
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; }
2. 不必执着于使用英文
取变量名是给程序员看的,编译器并不会在乎你用什么变量名,所以最重要的是人看得懂。
例:
定义一个飞机类,包含以下属性。
襟翼,副翼,前缘襟翼,水平尾翼,垂直尾翼,双涡扇发动机。
我相信很多程序员对这些专业的名词翻译并不了解,所以大家不要强行翻译为英文,
以免歧义,对于此种情况,我建议宁可使用全拼,也不使用半吊子英文。
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; }
相信大家都读的懂。
3. 尽量避免缩写
//服务器地址 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(); //虽然名字很长,但是有良好的可读性
4. 中英文混合,坚决不予许
//发票冲红 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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?