Visual Studio 代码风格约束
团队内部若能统一代码风格对于日后的项目维护大有裨益,但面对厚达十几甚至几十页的代码风格规范,开发人员难免产生抵触心理。Python和Go等在语言层面就对代码风格作了一定的约束,但C#并没有,为解决这个问题,我们可以在VS中设置团队内部要统一采用的代码风格。
文中所用VS版本信息如下:
![](https://upload-images.jianshu.io/upload_images/1458860-178f238995a4d495.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/761/format/webp)
设置代码风格
在VS搜索框中搜索Code Style
![](https://upload-images.jianshu.io/upload_images/1458860-d01757a9946d3cc8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/640/format/webp)
![](https://upload-images.jianshu.io/upload_images/1458860-d05223aa9a433bca.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1026/format/webp)
我们可以自定义代码风格(注意自定义规则顺序,是由上至下以此判断是否符合规则)以及对不符合风格代码做怎样的处理,这里是按照错误进行处理
![](https://upload-images.jianshu.io/upload_images/1458860-960e84a8283472c9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1031/format/webp)
可以看到对于不符合规范的命名VS会报错并给出改建建议:
![](https://upload-images.jianshu.io/upload_images/1458860-ebbca9b0e8ae7259.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/780/format/webp)
注意,这里的错误是IDE1006:Naming rule violation
,编译时依然能通过(没找到在哪里设置不允许通过编译):
![](https://upload-images.jianshu.io/upload_images/1458860-02875e998b9f5d3a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/535/format/webp)
下面是代码风格示例代码,仅供参考:
class Person { private const string FIRST_NAME = "firstName"; private static string StaticField = "static field"; private readonly string ReadOnlyField = "readOnlyField"; private string _privateField; public Person(string privateField) { _privateField = privateField; } public void Method(int parameters) { try { var local = ""; WriteLine(parameters); } catch (Exception) { } finally { } } } delegate void DelegateType(int i); struct ValueType { public event DelegateType DelegateTypeEvent; public void DelegateType() { if (DelegateTypeEvent != null) { for (var i = 0; i < 10; i++) { DelegateTypeEvent(i); } } else { throw new NullReferenceException(); } } } interface IPerson { void Say(string parameters); } enum WeekDays { Monday, Tuesday }
工具推荐
阿里团队的适用于JAVA代码风格检测插件P3C安装到IDEA中后,会对代码风格进行检测并给出改进建议
小结
统一的代码风格很重要,在编码时我们要求代码结构灵活易扩展,但对于代码风格应当讲究“死板”,不可灵活多变。
若团队内部的任一成员拿到项目代码一眼望去感觉像自己写的,那么我们就可以认为团队内的代码风格已经统一了。目前,我还不赞成过于苛求细节的代码风格约束(这种想法将来可能会变)。