.NET开发中应该遵循的几点建议

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技术分享平台

阅读原文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/272739.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux下jetty报java.lang.OutOfMemoryError: PermGen space及Jetty内存配置调优解决方案

Linux下的jetty报java.lang.OutOfMemoryError: PermGen space及Jetty内存配置调优解决方案问题linux的jetty下发布程序后再启动jetty服务时,发现启动不了,从日志中找到报java.lang.OutOfMemoryError: PermGen space。原因分析PermGen space,全…

微博php sdk,手机第三方新浪微博登录php api实现分析

提供api,POST方式,根据传递过来的微博uid/appkey,判断该用户的ID是否在自己的数据库中。如果有,直接登录返回用户登录api的json。如果没有,就将该用户的IDtoken请求微博用户信息api:http://open.weibo.com/…

13条只有程序员才能懂的内涵段子

一、bug跟蚊子的相似之处:1、不知道藏在哪里。2、不知道有多少。3、总是在你即将睡觉休息的时候出现。二、A:最近在看《一拳超人》,觉得咱们程序猿跟埼玉老师有点像啊!B:哪里像了?A:越秃越强&am…

Posix消息队列

一、函数 mq_open 头文件 mqueue.h; 原型 mqd_t mq_open(const char *name, int oflag, .../*mode_t mode,struct mq_attr* attr*/); 函数功能 创建消息队列; 参数 name :消息队列的名字,根据消息队列的规则,为了更好的…

php 等值线,【地理】攻克等值线的六大法门

3.等值线数值大小的判断方法(1)通常情况下,据图中已标注的等值线进行分析标注,标注时注意:①等值线数值的递变规律;②相邻两条等值线差值的大小。(2)在闭合的等值线上,除据以上方法判断外,还可用“大于…

4步win7下简单FTP服务器搭建(试验成功)

本文介绍通过win7自带的IIS来搭建一个只能实现基本功能的FTP服务器,第一次装好WIN7后我愣是没整出来,后来查了一下网上资料经过试验后搭建成功,其实原理和步骤与windows前期的版本差不多,主要是对新的操作系统还不是很熟悉。相信用…

C#开发模式——单例模式

一、单例模式简介单例模式是为保证一个对象,在程序运行的任何时刻只有一个实例存在,我们把这种实现方式称之为“单例模式”。二、单例模式的核心单例类只有一个实例存在单例类提供一个全局访问点单例类通过自己创建唯一实例单例类对外所有访问对象都提供一个唯一实例…

video.min.js php,在WordPress中使用videojs来播放七牛私有空间视频

首先,在主题函数文件functions.php中添加一个获取七牛下载凭证的函数。这部分参考function qiniu_download_url($url){$url trim($url, /);$deadline strtotime(1 hour);$url sprintf(%s?e%s, $url, $deadline);$sign hash_hmac(sha1, $url, SECRET_KEY, true)…

关于HTTP和HTTPS的区别

一HTTP和HTTPS的基本概念1、HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效&#xf…

Android 实现切换主题皮肤功能(类似于众多app中的 夜间模式,主题包等)

首先来个最简单的一键切换主题功能&#xff0c;就做个白天和晚上的主题好了。 先看我们的styles文件&#xff1a; 1 <resources>2 3 <!-- Base application theme. -->4 <style name"AppTheme" parent"Theme.AppCompat.Light.DarkAction…

订阅号 图文回复php,微信开发(PHP实现订阅号的公众号配置和自动回复)

首先在微信公众平台(网址&#xff1a;https://mp.weixin.qq.com)申请一个订阅号&#xff0c;然后在开发里找到开发者工具点击公众平台测试账号&#xff0c;在测试账号内进行微信开发实验。 1. 设置一个自己的有效的域名网址和TOKEN(就是暗号)&#xff0c;TOKEN一定要与PHP代…

为何技术领域中女程序员较少?

对于大多数人来说&#xff0c;他们意识中的科技人就是扎克伯格&#xff0c;乔布斯或者是比尔盖茨——经常出现在新闻里的典型的男科技企业家。其实在科技领域还有一些女性&#xff0c;比如苏珊沃西基&#xff08;YouTube的CEO&#xff09;和吉尼罗曼提&#xff08;IBM的CEO&…

This version of MySQL doesn't yet support 'LIMIT IN/ALL/ANY/SOME subquery 解决方法

This version of MySQL doesnt yet support LIMIT & IN/ALL/ANY/SOME subquery的意思是&#xff0c;这版本的 MySQL 不支持使用 LIMIT 子句的 IN/ALL/ANY/SOME 子查询&#xff0c;即是支持非 IN/ALL/ANY/SOME 子查询的 LIMIT 子查询。 也就是说&#xff0c;这样的语句是不能…

php 递归分销角色,PHP递归无限分类

我们面试程序开发的时候&#xff0c;经常会被问到递归的问题。今天我们在本文中以“素材火的特效分类表”作为演示&#xff0c;使用PHP递归结合Mysql实现无限级分类。难易&#xff1a;初级下载资源下载积分&#xff1a;50积分递归简单的说就是一段程序代码的重复调用&#xff0…

Android音频系统之AudioPolicyService

地址&#xff1a;http://blog.csdn.net/edmond999/article/details/18599327 1.1 AudioPolicy Service 在AudioFlinger小节&#xff0c;我们反复强调它只是策略的执行者&#xff0c;而AudioPolicyService则是策略的制定者。这种分离方式有效地降低了整个系统的藕合性&#xff0…

程序员常去的14个顶级开发社区

我们来看一下程序员经常去的 14 个顶级开发者社区&#xff0c;如果你还不知道它们&#xff0c;那么赶紧去看看&#xff0c;也许会有意想不到的收获。一、Stack Overflow9 月份&#xff0c;Stack Overflow 也将迎来其 6 岁的生日&#xff0c;毫无疑问&#xff0c;Stack Overflo…

basename php 中文,php basename不支持中文怎么办

不久前遇到一段代码使用了basename&#xff0c;我文件名是中文的&#xff0c;每次返回都只有后缀。后来发现basename函数有猫腻&#xff0c;不支持中文文件名&#xff0c;但凡有以中文开头的文件名将被忽略了。函数说明/*** 从路径中返回文件名* param string $path* 在Windows…

C#特性-表达式树

表达式树ExpressionTree 表达式树基础 转载需注明出处&#xff1a;http://www.cnblogs.com/tianfan/刚接触LINQ的人往往觉得表达式树很不容易理解。通过这篇文章我希望大家看到它其实并不像想象中那么难。您只要有普通的LINQ知识便可以轻松理解本文。表达式树提供一个将可执行代…

程序员的一个好习惯,你有几个?

在很多外人看来,作为我们程序员这个行业只要会敲代码会改bug基本就可以了&#xff0c;但是现在行业人员几近饱和&#xff0c;没有过硬的几把刷子就想着可以甩掉身后的大部队也是不可能的。所以说我们要不断的学习不断的充实自己让企业在裁员的时候压根就考虑不到我们的头上来。…

matlab四维图程序,Matlab 四维图形绘制

这个问题可以用slice命令实现&#xff1a;%%%%%%clear all[x,y,z] meshgrid(0:.5:10,0:.5:10,0:.5:10);c x.^2y.^2z.^2;xs [0,2,4,6,8,10];ys [4];zs [6]; % xs,ys,zs可决定切片形式和位置&#xff0c;help slice可明白其具体含义slice(x,y,z,c,xs,ys,zs)colormap hsv当然…