1、始终控制类的大小

那些超大的类在尝试做太多的事情,这违反了单一职责原则, 为什么一定要将两个职责分离到单独的类中呢?因为每一个职责都是变化的中心。在需求变更时,这个变更将会出现在负责该职责的类中。如果一个类承担了多个职责,就会有一个以上的原因导致其变化。如果一个类有多重职责,则说明这些职责已经耦合到了一起。并且某个职责的变化将有可能削弱或限制这个类满足其他职责的能力。这种耦合将会导致非常脆弱的设计,进而在职责发生变化时,设计可能被意想不到的破坏了。

2、避免不需要的注释

不同水平的开发人员可能都会有自己的见解。可以尝试避免为单独的方法或短小的类进行注释,通常开发人员通过写注释来提高代码的可读性和可维护性,但要保证你所写的注释不会成为代码中的噪音。

3、避免不必要的Region

Region 是 Visual Studio 提供的一个功能,它允许你将代码分块。Region 的存在是因为它可以使大文件导航变得容易。Region 还常被用于隐藏丑陋的代码,或者类已经膨胀的非常大了需要分块。而如果一个类做了太多的事情,也就说明其违反了单一职责原则。所以,下次当你想新增一个 Region 时,先考虑下有没有可能将这个 Region 分离到一个单独的类中。

4、控制方法的代码量

方法中的代码行数越多,则方法越难理解。抽取方法是最常见的重构方式之一,如果你发现一个方法过长,或者已经需要一个注释来描述它的目的了,那么你就可以应用抽取方法了。人们总是会问一个方法到底多长合适,但其实长度并不是问题的根源。当你在处理复杂的方法时,跟踪所有局部变量是最复杂和消耗时间的,而通过抽取一个方法可以节省一些时间。

5、避免方法中过多的参数

通过声明一个类来代替多个参数。创建一个类,用于包含所有的参数。

//避免

public void Checkout(string shippingName, string shippingCity,

string shippingSate, string shippingZip, string billingName,

string billingCity, string billingSate, string billingZip)

{

//TODO

}

//建议

public void Checkout(ShippingAddress shippingAddress, BillingAddress billingAddress)

{

//TODO

}

6、避免复杂的表达式

复杂的表达式意味着其背后隐藏了一些涵义,我们可以通过使用属性来封装这些表达式,进而使代码更易读些。

7、把警告等同于错误来处理

我们编译工程后会得到一个警告,但仍可以运行工程而不会发生任何错误。但是我们应该尽可能地移除这些警告。

8、精简多处返回

在每段程序中都减少函数返回的数量。假设从底部开始阅读代码,你很难意识到有可能在上面的某处已经返回了,这样的代码将是非常难理解的。

仅使用一处返回可以增强可读性。如果程序这么写的话可能看起来比较干净,但不立即返回也意味着需要编写更多代码。

9、使用断言

在软件开发中,断言代码常被用于检查程序代码是否按照其设计在执行。通常 True 代表所有操作按照预期的完成,False 代表已经侦测到了一些意外的错误。断言通常会接收两个参数,一个布尔型的表达式用于一个描述假设为真的假定,一个消息参数用于描述断言失败的原因。

尤其在开发大型的、复杂的高可靠系统中,断言通常是非常有用的功能。

欢迎关注我的公众号(同步更新文章)DoNet技术分享平台

阅读原文

.NET开发中应该遵循的几点建议相关推荐

  1. 在项目开发中应该遵循的准则

    根据我公司实际情况,大致列出在项目开发中应遵循的步骤原则.在各程序员遵循原则的情况下,方能开发出健壮有效的程序,且能提高自己的编程素质. 1.在项目开发初期应该有项目的详细原型.鉴于程序员文档能力有限 ...

  2. 关于开发中的常用手段(个人建议)

    由于最近在一家外包公司 做项目 (团队开发 3个人) 有个朋友一起 我们研究出一套 相对来说 速度和效率都比较高的开发方法. 1. 搭建界面 对于一个程序来说 无疑刚上来就要看原型 看UI 看切图 所 ...

  3. 代码质量与安全 | 一文了解高级驾驶辅助系统(ADAS)及其开发中需要遵循的标准

    高级驾驶辅助系统(ADAS)有助于提高车内每个人的安全性,帮助他们安全抵达目的地.这项技术功能非常重要,因为大多数的严重车祸都是人为错误造成的. 本篇文章将讨论什么是高级驾驶辅助系统(ADAS),提供 ...

  4. 企业项目开发中可遵循的时间管理守则-华为时间管理

  5. 关于Net开发中一些SQLServer性能优化的建议

    一. ExecuteNonQuery和ExecuteScalar 对数据的更新不需要返回结果集,建议使用ExecuteNonQuery.由于不返回结果集可省掉网络数据传输.它仅仅返回受影响的行数.如果 ...

  6. 在EPS开发中遵循ISO 26262标准

    原文链接: EPS開発におけるISO 26262対応への取組み 在EPS开发中遵循ISO 26262标准 1 引言 ISO 26262是2011年11月作为国际标准发布的汽车功能安全标准.该标准的目标 ...

  7. Android开发中应避免的重大错误

    by Varun Barad 由Varun Barad Android开发中应避免的重大错误 (Critical mistakes to avoid in Android development) A ...

  8. 敏捷开发中的故事点到底是什么?如何预估故事点?

    故事点 是敏捷项目管理和开发中的一种抽象的度量单位,用于估计实现一个或多个用户故事的复杂度,它是对工作量的一种描述方式.一个故事点就是一个数字,透过这个数字告诉整个团队用户故事的复杂度.复杂度包括功能 ...

  9. freemarker中运算符_如何在Web应用系统表示层开发中应用Velocity模板技术

    软件项目实训及课程设计指导--如何在Web应用系统表示层开发实现中应用Velocity模板技术 1.分离Web表示层的数据处理和展现逻辑的常见的应用技术 分离Web表示层的数据处理和展现逻辑是目前企业 ...

最新文章

  1. C++中前置声明介绍
  2. 日志系统新贵Loki,确实比笨重的ELK轻
  3. python输入字符串转换为公式_将python字符串转化成长表达式的函数eval实例
  4. 博士申请 | 上海财经大学语言智能实验室招收2022年秋季入学博士生
  5. CSS3幻灯片制作心得
  6. 5G发展是绵绵秋雨 应循序渐进
  7. PC-CSS-多浏览器支持HTML5
  8. C# DataTable的詳細用法
  9. TypeError: HashUpdate fail
  10. Linux断点方法,一种基于Linux问题断点的定位方法及系统与流程
  11. HALCON 21.11:深度学习笔记---网络和训练过程(4)
  12. Android开发检测网络是否连接
  13. Java入门的程序汇总
  14. java开源引擎easyrule_【Urule介绍】开源可视化规则引擎
  15. rar压缩包解密在线,忘记rar压缩包密码怎么找回?
  16. 空间几何变换知识点——摘自《机器视觉研究与发展》赵彭
  17. 关于高通平台下camera一些参数的设置
  18. 怎样判断安装的mysql是社区版还是企业版
  19. android手机安装carplay,安卓系统适用carplay经验分享
  20. 106-Latex矩阵过大问题

热门文章

  1. 基于VS2019的Eigen库安装详解
  2. mysql重命名数据表称方式_在MySQL中,使用()重命名数据表。_学小易找答案
  3. jq 组装数组_Jquery 数组操作
  4. swing和MySQL登录注册_JavaSwing+Mysql实现简单的登录界面+用户是否存在验证
  5. 阿里云服务器ECS按ctrl+alt+delete无法登录
  6. Http状态码完整说明
  7. 面经——嵌入式软件工程师ARM体系与架构相关
  8. 全国计算机等级考试题库二级C操作题100套(第72套)
  9. python items函数用法,Python中dictionary items()系列函数的用法实例
  10. windows2003 apache php mysql_Windows 2003搭建Apache PHP MySQL环境经验分享