C#开发人员应该知道的13件事情

简介:

本文讲述了C#开发人员应该了解到的13件事情,希望对C#开发人员有所帮助。

1. 开发过程

开发过程是错误和缺陷开始的地方。使用工具可以帮助你在发布之后,解决掉一些问题。

编码标准

遵照编码标准可以编写出更多可维护的代码,特别是在由多个开发人员或团队编写和维护的代码库中。例如FxCop,StyleCop和ReSharper等,就是常用的实施编码标准的工具。

开发人员:在压缩代码之前,请使用工具仔细检查是否违反了标准,并且对结果进行分析。使用工具发现的代码路径问题,不比你预期的少。

代码审查

代码审查和结对编程是任务开发人员审查他人编写的源代码的常见做法。通过这些方式希望能够检查出作者的错误,如编码错误或实现错误。

代码审查是一个很有价值的做法,但是它依赖于人类,易犯错误,所以很难扩展。

静态分析

静态分析工具会在不运行代码的情况下分析代码,在不需要编写测试用例的情况下,查找违反编码标准或存在缺陷的问题。它们能有效地找到问题,但你需要选择出那些能够定位出有价值问题的工具,找出有价值的问题。C#静态分析工具包括Coverity,CAT.NET和Visual Studio代码分析。

动态分析

动态分析工具在运行时分析代码,帮助你查找缺陷,如安全漏洞,性能和并发问题。它分析运行时环境的上下文中的代码,因此其有效性受测试工作负载的限制。Visual Studio提供了一些动态分析工具,包括并发可视化器,IntelliTrace和分析工具。

管理人员/团队领导:利用开发最佳实践,以避免常见的陷阱。仔细考虑可用的工具,以确保它们与你的需求和文化兼容。

测试

有许多类型的测试,例如:单元测试,系统集成测试,性能测试,渗透测试。在开发阶段,大多数测试由开发人员或测试人员编写,以验证应用程序是否满足其要求。

测试仅在它们运行正确的代码时有效。在实现功能和测试的同时,保持开发速度是具有挑战性的。

开发最佳实践

投入时间来识别和配置工具,以便找到你关心的代码问题,无需为开发人员带来更多的工作。经常自动运行分析工具和测试,以确保开发人员在代码刚写完不久,就能定位到问题。

尽快地定位到所有的诊断输出 - 无论是编译器警告,标准违例,通过静态分析识别的缺陷,还是测试失败。如果新的诊断全部是可忽略的,那么审查所起的作用就增加了,开发人员也不必再为代码问题烦恼。

采用这些最佳实践有助于提高代码的质量,安全性和可维护性,开发人员的一致性和生产力以及发布的可预测性。

关心 工具 影响
一致性,可维护性 编码标准,静态分析,代码审查 一致的间距,命名和格式化提高了可读性,并使开发人员更容易编写和维护代码。
正确性 代码审查,静态分析,动态分析,测试 代码不仅需要在语法上有效,而且必须按照开发人员的意图并满足项目需求。
功能 测试 测试验证代码是否满足要求,如正确性,可扩展性,鲁棒性和安全性。
安全 编码标准,代码审查,静态分析,动态分析,测试 安全是一个非常复杂的问题; 任何弱点或缺陷都可能被利用。
开发人员生产力 编码标准,静态分析,测试 当他们有工具来识别错误时,开发人员更快地实现代码更改。
释放可预测性 编码标准,代码审查,静态分析,动态分析,测试 简化后期活动,尽早解决缺陷和问题,尽可能缩短修复周期。


2. 类型陷阱

C#的一个主要优势是其灵活的类型系统; 类型安全有助于早期发现错误。通过强制实施严格的类型规则,编译器能够帮助你保持正确的编码实践。C#语言和.NET框架提供了丰富的类型集合以适应最常见的需求。大多数开发人员很好地了解常见的类型及其用途,但有一些常见的误解和误用。

有关.NET Framework类库的更多信息可以在MSDN库中找到。

了解和使用标准接口

某些接口涉及常用的C#特性。例如,IDisposable允许使用常用的资源处理习语,例如“using”关键字。理解什么时候使用接口,能够使你编写更容易维护的C#代码。

避免ICloneable - 设计者从来没有明确拷贝的对象是深拷贝还是浅拷贝。由于没有正确拷贝对象行为的标准,也就无法有效的使用这样的接口。

结构

尽量避免写到结构体。将它们视为不可变的,能够防止混淆的发生,并且在共享内存的场景(如多线程应用程序)下更安全。相反,在创建结构体时使用初始化对象,如果需要更改值,则创建新的实例。

要了解哪些标准类型/方法是不可变的并返回新值(例如,string,DateTime)和哪些是可变的(List.Enumerator)。

字符串

字符串可以为null,因此在适当时,使用起来很方便。等价(s.Length == 0)可能会抛出一个NullReferenceException,但是String.IsNullOrEmpty(s)和String.IsNullOrWhitespace(s)函数能够优雅地处理null。

标记枚举

枚举类型和常量值是能表露出自己含义的标识符,用于替换魔术数字,以便使得代码更加可读。

如果你发现需要创建枚举的集合,标记枚举可能是一个更简单的选择:


 



 


  



  




>


<


  




<

<

><



相关文章
|
SQL C#
一起谈.NET技术,如何成为人尽皆知的C#开发人员
这篇指导最终会教你如何成为你的同事中最受欢迎的人,您将成为他们在休息和工作时间的聊天的英雄,甚至可以说这篇指导能帮助减少你的工作,你能得到你的同事的慷慨帮助,他们想帮你做你的工作。因为你的名声!   1、变量命名可以显示你创造潜力,不要使用标识法和准则来烦扰你自己,这些全都会限制你的灵感,如果您使用一个未知的命名方案,你会得到赞扬,您的同事会尊敬你。
910 0
|
XML .NET Java
100道C#面试题(.net开发人员必备)
100道C#面试题(.net开发人员必备) 注明:经过本人面试的经历和在网上的资料整理出来的100道比较常见的C#面试题,想当初面试公司虽然不是很多,第一次找工作用了近两周的时间面试了二十多家公司,成功的不到十家,最后选择了一家大型的软件公司干了两个月就走人了。
3937 0
|
安全 .NET API
[搬运] 写给 C# 开发人员的函数式编程
原文地址:http://www.dotnetcurry.com/csharp/1384/functional-programming-fsharp-for-csharp-developers 摘要:作为一名 C# 开发人员,您可能已经在编写一些函数式代码而没有意识到这一点。
1678 0
|
1月前
|
C#
24. C# 编程:用户设定敌人初始血值的实现
24. C# 编程:用户设定敌人初始血值的实现
18 0
|
2月前
|
SQL 数据库连接 应用服务中间件
C#WinForm基础编程(三)
C#WinForm基础编程
73 0
|
2月前
C#WinForm基础编程(二)
C#WinForm基础编程
55 0
|
2月前
|
C# 数据安全/隐私保护
C#WinForm基础编程(一)
C#WinForm基础编程
59 0
|
4月前
|
数据采集 前端开发 C#
C#编程艺术:Fizzler库助您高效爬取www.twitter.com音频
Twitter是全球最大的社交媒体平台之一,包含丰富的音频资源。用户可以在Twitter上发布、转发、评论和收听各种音频内容,如音乐、播客、新闻、故事等,直接从Twitter抓取音频数据并非易事,尤其是在考虑到可能的封锁和反爬虫机制。Twitter会对频繁访问的IP地址进行限制或封禁,以防止恶意爬虫的行为。因此,我们需要使用一些技术手段来规避这些障碍,确保稳定而高效的数据访问。
C#编程艺术:Fizzler库助您高效爬取www.twitter.com音频