Web开发的艺术:C#开发中实现代码简洁性与规范性的终极指南

一、变量的要求

变量名

1.简短有意义:

合适: student_count,student_ids,student_enable_list, water_price

不合适: numberOfItemsInTheCart, totalPriceOfTheOrderInTheShoppingCart,temp, data,list

2.变量名之间不要太像:

合适: totalAmount, discountRate

不合适: totalAmount, totalAmt

3.别缩写

合适: maximumValue, transactionDate

不合适: maxVal, transDate

使用变量

1.常量先定义后使用

合适:int dayOfWeek = 7                 var result = sum / dayOfWeek

不合适:var result = sum / 7

2.类优先于字典

因为类提供了类型检查、支持继承、易开发(IDE提示)、易维护、可读性强 

二、函数的要求

1. 命名简短且有意义,使用动+名组合

// 不推荐的命名
void DoStuff() { ... }

// 推荐的命名
void CalculateTotalAmount() { ... }

2. 单一职责

        每个函数应当只做一件事。这有助于提高代码的可维护性和重用性。函数的职责应当清晰,避免承担多个任务。

反例(违反了单一职责,一个函数三件事):

        1.难复用,有时候只想调用其中一个逻辑,而不是三个。  

        2.难维护,修改其中一个逻辑可能引发蝴蝶效应。


3. 无副作用(和单一职责差不多)

        函数除了其明确的功能外,不应有其他副作用。副作用是指函数在完成主要任务外,还改变了程序的状态或依赖于外部状态。

4. 入参少(不超五个)

        函数的入参应尽量少。过多的参数会降低函数的可读性和可维护性。如果函数需要很多参数,可以考虑使用类/元组来封装参数。

5. 函数之间不重复

        避免函数之间的功能重复。函数应尽量抽取出并复用已有功能,避免重复代码。

6. 循环复杂度小

        优化循环中的复杂度,使用提前返回(return)跳出循环(break)、继续循环(continue)来简化逻辑,提升代码的可读性。

三、注释的要求

简洁+明确

        正例如下

        反例如下

1.太简单:// 获取分组列表

2.太罗嗦:// 这个函数会根据输入的学生列表,处理所有学生数据,然后返回一个包含按组分类的学生数据的列表

3.胡言乱语:// 处理学生数据

4.浪费口舌:// 调用函数

四、类的要求

1.类名简洁清晰

2.方法短少

长方法拆分

3.高内聚 低耦合

1.高内聚:一个类中所有方法和属性都应该紧密相关(例如学生管理类,方法可以是学生注册,学生退学等,它们都和学生字段有密切关联,不要加一些毫无相关的方法,例如图书馆账号注册等,应该放在图书管理类)
2.低耦合:一个类的改变不应该对其他类造成太大的影响
    反例1:winform界面逻辑和业务逻辑写在一起,相互依赖;
    反例2:学生管理类中直接new一个对象,调用它的方法,这个对象的方法被修改及其可能影响到学生管理类;
    调整方法:依赖注入、调用接口(而不是直接调用实现)

4.SOLID 原则

【包含内容】单一职责、开闭原则、里氏替换、接口隔离、依赖倒置

  • 单一职责:一个类一个功能(例如学生管理类,就管理学生信息就行了,不要又配置连接字符串,又算法分析)
  • 开闭原则:增加需求时,应该扩展类而不是修改类(特别是不应该修改高层代码)
  • 里氏替换:子类继承父类方法和属性时,子类必须遵循父类的接口和行为,确保不会破坏已有功能
  • 接口隔离:接口应专注于单一功能,避免将多种功能耦合在一个接口中(例如分析学生近期成绩涨幅,不要耦合成分析学生近期成绩涨幅+不合格数量+优秀数量+年级排名,这样复用性就降低了)
  • 依赖倒置:调用接口而不是调用实现(高层模块不应该依赖低层模块,两者都应该依赖抽象)。

(未完待续。。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值