翼度科技»论坛 编程开发 .net 查看内容

读C#代码整洁之道笔记01_C#的编码标准和原则

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18

1. 编码原则

1.1. SOLID原则


  • 1.1.1. 单一职责原则(Single Respon-sibility Principle)
  • 1.1.1.1. 类和方法应当仅具备单一职责。所有组合为单一职责的元素应当组合在一起并进行封装。
  • 1.1.2. 开闭原则(Open-Closed Principle)
  • 1.1.2.1. 类和方法应当对扩展开放,对修改封闭。
  • 1.1.3. 里氏替换原则(Liskov Substitution)
  • 1.1.3.1. 若函数接收一个基类的指针,那么该指针应当可以替换为任何从基类派生的类(的指针)而无须事先知晓具体类信息。
  • 1.1.4. 接口隔离原则(Interface Segregation Principle)
  • 1.1.4.1. 与其设计一个大而全的接口不如拆分为若干小型接口,而类可以选择实现需要的接口中的方法。
  • 1.1.5. 依赖倒置原则(Dependency Inversion Principle)
  • 1.1.5.1. 高层次的模块不应当依赖低层次的模块。
  • 1.1.5.2. 低层次的模块的替换不应当影响高层次模块的使用。
  • 1.1.5.3. 不论是高层次的模块还是低层次的模块都应当依赖于抽象。
  • 1.1.5.4. 抽象不应当依赖于细节,但是细节应当依赖于抽象。
1.2. YAGNI原则


  • 1.2.1. “你不会需要它”(You Ain't Gonna Need It)
  • 1.2.2. 确保类、方法和整体代码行数保持绝对最小水平。
1.3. KISS原则


  • 1.3.1. “保持软件简单易懂”(Keep It Simple,Stupid)
  • 1.3.2. 务必要保持代码整洁易读,确保即使是新手程序员也能够理解其含义。
1.4. DRY原则


  • 1.4.1. “避免重复的代码”(Don't Repeat Yourself)
  • 1.4.2. 当遇到重复代码时应当尽早将其移除
1.5. 奥卡姆剃刀法则


  • 1.5.1. Occam's Razor, Ockham's Razor
  • 1.5.2. “如无必要,勿增实体”,即“简单有效原理”。
  • 1.5.2.1. 最简单的方案也最可能是正确的那个方案
  • 1.5.2.2. 假设越多,设计方案包含缺陷的可能性就越大
  • 1.5.2.3. 项目的构成组件越少,出问题的可能性就越少
2. 编码方法

2.1. 测试驱动开发(Test-Driven Development,TDD)

2.2. 行为驱动开发(Behavioral-Driven Development,BDD)


  • 2.2.1. SpecFlow
2.3. 面向方面编程(Aspect-Oriented Programming,AOP)


  • 2.3.1. PostSharp
3. 良好代码

3.1. 合理的缩进


  • 3.1.1. 工具实现
3.2. 有意义的注释

3.3. API文档注释


  • 3.3.1. 文档越易用,开发人员使用API的意愿就越强
3.4. 使用命名空间合理组织代码


  • 3.4.1. 使用命名空间合理组织代码
3.5. 合理的命名规则


  • 3.5.1. Pascal命名法
  • 3.5.1.1. 命名空间、类、接口、枚举和方法
  • 3.5.2. 驼峰命名法
  • 3.5.2.1. 变量名称、参数名称
  • 3.5.3. 在成员变量上必须加上前缀下划线
3.6. 一个类执行一种任务

3.7. 一个方法做一件事情

3.8. 方法的代码少于10行,最好不超过4行


  • 3.8.1. 代码格式化、链式函数算1行?
3.9. 方法的参数不多于两个


  • 3.9.1. 方法最好没有参数
  • 3.9.2. 有两个以上的参数时就需要考虑类和方法的职责是不是太多了
  • 3.9.3. 方法的确需要两个以上的参数,那么最好将其合并为一个对象参数
3.10. 合理使用异常

3.11. 代码可读性强

3.12. 代码耦合程度低

3.13. 高内聚的代码


  • 3.13.1. 将公共的功能正确地分组的代码具有高度的内聚性
3.14. 对象会被恰当销毁


  • 3.14.1. 请务必调用Dispose()方法明确地销毁使用中的资源
  • 3.14.2. 将对象(引用)设置为null以使其超出作用范围
  • 3.14.3. using语句
3.15. 避免使用Finalize()方法


  • 3.15.1. 最好在更加可靠的Dispose()方法中来销毁非托管资源
3.16. 合理地进行抽象


  • 3.16.1. 当设计只向更高的级别开放,并仅开放必需的内容时,它就处在正确的抽象层次上
3.17. 在大型类中使用#region进行区域划分


来源:https://www.cnblogs.com/lying7/archive/2023/03/20/17232202.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具