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。

标记枚举

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

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


 



 


  



  




>


<


  




<

<

><



相关文章
|
5月前
|
关系型数据库 C# 数据库
技术笔记:MSCL超级工具类(C#),开发人员必备,开发利器
技术笔记:MSCL超级工具类(C#),开发人员必备,开发利器
55 3
|
SQL C#
一起谈.NET技术,如何成为人尽皆知的C#开发人员
这篇指导最终会教你如何成为你的同事中最受欢迎的人,您将成为他们在休息和工作时间的聊天的英雄,甚至可以说这篇指导能帮助减少你的工作,你能得到你的同事的慷慨帮助,他们想帮你做你的工作。因为你的名声!   1、变量命名可以显示你创造潜力,不要使用标识法和准则来烦扰你自己,这些全都会限制你的灵感,如果您使用一个未知的命名方案,你会得到赞扬,您的同事会尊敬你。
931 0
|
XML .NET Java
100道C#面试题(.net开发人员必备)
100道C#面试题(.net开发人员必备) 注明:经过本人面试的经历和在网上的资料整理出来的100道比较常见的C#面试题,想当初面试公司虽然不是很多,第一次找工作用了近两周的时间面试了二十多家公司,成功的不到十家,最后选择了一家大型的软件公司干了两个月就走人了。
4105 0
|
安全 .NET API
[搬运] 写给 C# 开发人员的函数式编程
原文地址:http://www.dotnetcurry.com/csharp/1384/functional-programming-fsharp-for-csharp-developers 摘要:作为一名 C# 开发人员,您可能已经在编写一些函数式代码而没有意识到这一点。
1721 0
|
6月前
|
开发框架 前端开发 .NET
C#编程与Web开发
【4月更文挑战第21天】本文探讨了C#在Web开发中的应用,包括使用ASP.NET框架、MVC模式、Web API和Entity Framework。C#作为.NET框架的主要语言,结合这些工具,能创建动态、高效的Web应用。实际案例涉及企业级应用、电子商务和社交媒体平台。尽管面临竞争和挑战,但C#在Web开发领域的前景将持续拓展。
202 3
|
6月前
|
SQL 开发框架 安全
C#编程与多线程处理
【4月更文挑战第21天】探索C#多线程处理,提升程序性能与响应性。了解C#中的Thread、Task类及Async/Await关键字,掌握线程同步与安全,实践并发计算、网络服务及UI优化。跟随未来发展趋势,利用C#打造高效应用。
199 3
|
22天前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
30 3
|
2月前
|
API C#
C# 一分钟浅谈:文件系统编程
在软件开发中,文件系统操作至关重要。本文将带你快速掌握C#中文件系统编程的基础知识,涵盖基本概念、常见问题及解决方法。文章详细介绍了`System.IO`命名空间下的关键类库,并通过示例代码展示了路径处理、异常处理、并发访问等技巧,还提供了异步API和流压缩等高级技巧,帮助你写出更健壮的代码。
45 2