我负责公司的一个项目,项目框架搭完以后,我叫了组里一个程序员小张跟我一起开发,作为一名C#程序员,我在代码风格上是有强迫症的,我知道很多半路出家的程序员或者Java、前端转C#的程序员在代码风格上多少都有点不符合C#的习惯,而小张恰恰是半路出家的程序员,因此我特别叮嘱他,在代码风格上要和我框架里面的代码风格保持一致。他满口答应着,但是当我看到他的代码以后是真头疼!
首先,C#一般命名一个私有方法(函数),比如说一个查找解析一个二维码的方法,C#习惯性的命名方式是“ResolvingBarcode”,但是为了将私有方法和公开方法做区分,命名成resolvingBarcode也没有人去怪你。但是,如果你命名成resolving_barcode,如果我是一个C#的Leader,我可能就要找你茬了!首先,C#一般命名一个私有方法(函数),比如说一个查找解析一个二维码的方法,C#习惯性的命名方式是“ResolvingBarcode”,但是为了将私有方法和公开方法做区分,命名成resolvingBarcode也没有人去怪你。但是,如果你命名成resolving_barcode,如果我是一个C#的Leader,我可能就要找你茬了!
是的,小张几乎不管是私有方法还是公开方法,全部是以小写单词加下划线这种形式命名的,跟我的代码风格格格不入。
一般情况下,C#很少使用下划线来隔开变量的单词,即使要用,也很少会在命名类和方法中使用下划线。在我的风格中,一个方法的内部的局部变量使用下划线我是接受的,但是如果在方法外部的任何地方使用下划线我都无法接受!除非是一个类的局部私有变量。
比如说定义一个类的私有条码变量,我可能会命名成_BarCode,这样既可以保持命名风格,又能将私有变量和公开变量区分开来,也就是说,如果这个条码的变量是公开的,我会直接命名成BarCode,没有下划线。
但是,如果一个类的私有变量有进行过封装,比如加了get和set方法,这时候私有变量首个单词的首字母必须小写,公开部分的变量还是遵循首字母大写的原则。理解起来也很简单,假设一个私有变量需要公开方法,如果这个私有变量叫作BarCode的话,公开的方法变量该怎么起名字呢?
但是,因为小张之前还学过一段时间C++,而且,在方法内部定义变量的时候也使用了下划线,为了将类的局部变量跟方法里面的变量区分开来,可能小张的命名方式就成了__BarCode!是的,他会用两个下划线甚至更多的下划线!
最后,我认为可能是我没有讲清楚,我专门把小张拉到一边,重新详细地给他说了下代码规范。
首先,公开变量、方法统一使用首字母大写的变量命名方式,不允许带任何下划线,私有的全局变量也可以跟公开变量一样的命名方式,但也可以在变量名称前加个下划线来区分,如果是“私有变量,公开方法”,则首个单词的首字母小写。C#的风格是不管是私有方法还是公开方法,方法名基本都是以首字母大写的方式来隔开方法名的每个单词,如果暂时克服不了,私有方法首个单词的首字母可以小写。
结语
我知道很多程序员可能觉得我纠结代码的命名规范没有意义,其实是有意义的,首先就是代码风格保持一致,在审阅代码的时候可以减少代码的落差感,这就像一个Java程序员,突然让他去看C++代码,他会很不习惯,除了可能代码看不懂外,最大的落差感就是C++代码风格和Java的代码风格区别还是挺大的。
这种落差感一旦形成,就会影响一个程序员审阅代码的思路,从而影响效率。
可能有些程序员看到我的描述,也会认为C#或者说我的代码风格他们不习惯,这其实没关系,因为当一个程序员保持一种代码风格久了以后再看其他风格的代码就会很不舒服,很影响阅读。因此,如果您觉得我的这种代码风格您不习惯,这恰恰证明了一个研发团队保持统一的代码风格的重要性!
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.