首页 > 编程语言 >C# 的基本代码规范

C# 的基本代码规范

时间:2023-02-20 13:45:02浏览次数:27  
标签:C# 代码 规范 名称 类型 应该 方法

个人遵守的通用 C# 代码规范,其中参考了微软的代码规范。实际上在是使用一些框架开发时(例如 ASP.NET Core)也应该遵循一定的模式规范,但是本文只讨论一些比较通用的代码规范。

文章将从下面的几个方面来谈论规范:

  1. 代码排版
  2. 标识符命名
  3. 类型设计

代码排版

良好的代码排版是整洁代码目标的起点,方法中的代码应该按照逻辑功能分块,并以空行分隔。并在必要时,或者能够代码比较大的重用性的时候将部分块抽取成为函数,使之重用。

花括号应该另起一行,同时如何 if 后语句只有一句,可以省略花括号。if 条件后的语句应该另起一行,而不要写在一行

变量声明应该靠近使用他的地方。

标识符命名

方法类名以及属性都应该使用 Pascal 格式,变量字段应该使用小驼峰格式,如果成员字段不是常量应该以下划线开头以区别方法中的变量。

所有的派生类型命令应该遵循一定的规律,所以的自定义异常应该以 Exception 结尾,所以的自定义属性应该以 Attribute 结尾,所以的自定义容器类型应该以 Collection 结尾,
扩展方法所在的静态类应该以被扩展的类名+ Extensions 名称。

对于 abstract 类型不要命名为 XXBase,应当去一个取合适的名称。接口命名应该以 I 开头,接口的默认实现名称应该是接口名称去掉开头的 I,不要以 DefaultXXX 命名。大众熟识的
常用名称应该留给常用的标准实现,而给特别的详细的名称赋予到高级的,特定的实现。

相比前缀应当优先使用后缀,这样通过 IDE 的代码提示能够直接显示出来。

类型设计

对于实现了非托管资源的类型应该实现 IDispose 接口,并使用 Dispose 模式,如果关于关闭对应资源已有总所周知的方法,那么该方法应该与 Dispose 方法等价。如非清楚你自己在做什么
不要实现析构方法。

类型的继承层次不应该太深。

如果类型将要放入使用哈希表的类型中时,则应该同时重写 GetHashCode 和 Equals 方法,同时如果类型的 hashcode 相同那么则它们应该相等,需要注意加入到哈希表中的对象在他的生命周期中 hashcode
应该保持不变,否则哈希表将会混乱。

引用类型的 == 运算符应该使用比较应用,Equals 函数比较值相等性。值类型应该重写 == 运算和以及 Equals 函数,并使它们含义相同。

//... 略

标签:C#,代码,规范,名称,类型,应该,方法
From: https://www.cnblogs.com/freesfu/p/17137057.html

相关文章

  • java.sql.SQLFeatureNotSupportedException错误的解决方式
    今天在学习黑马的瑞吉外卖项目中遇到了java.sql.SQLFeatureNotSupportedException错误debug调试后发现是service进行访问数据库时未能成功连接数据库,对比过application......
  • typescript+vue3使用vue-ls
    npmivue-ls新建storage.tsimportStoragefrom'vue-ls';constoptions={namespace:'vuejs__',//keyprefixname:'ls',//namevariableVue.[ls]ort......
  • MFC-键盘消息
           ......
  • TreeSet的使用以及Comparator接口
    packageedu.wtbu;importjava.util.Comparator;importjava.util.Iterator;importjava.util.TreeSet;publicclassDemo01{publicstaticvoidmain(String[]args......
  • C/C++学生选课管理系统[2023-02-20]
    C/C++学生选课管理系统[2023-02-20]4.15学生选课管理系统题目描述:假定有n门课程,每门课程有课程编号,课程名称,课程性质(必须/选修),学时,授课学时,实验或上机学时,学分等信......
  • 微信小程序全局变量(globalData)和缓存(StorageSync)的区别和用法
    globalData和storage的区别一、app.globalData是全局变量,下次进入的时候,就要重新获取,一般用于:1、保存一些可能涉及安全类的数据,例如资源类,每次需要很准确的,就建议用全......
  • iChatGPT隐私政策
    iChatGPTrespectsandprotectstheprivacyofalluserswhousetheservice.Inordertoprovideyouwithmoreaccurateandpersonalizedservices,iChatGPTwi......
  • Linux文件 profile、bashrc、bash_profile区别
    Linux系统中,有三种文件出现的非常频繁,那就是profile、bash_profile、bashrc文件。1、profile作用profile,路径:/etc/profile,用于设置系统级的环境变量和启动程序,在......
  • iChatGPT用户协议
    InordertouseiChatGPTanditsservices,youshouldreadandabidebythe"iChatGPTLicenseAgreement"(hereinafterreferredtoas(thisagreement).Asepar......
  • MAC环境变量
     安装MAC一些编程用到等环境,经常需要配置想相关环境的路径,所以必须了解MAC path系统路径文件加载顺序: /etc/profile/etc/paths~/.bash_profile~/.bash_login~/.p......