文档章节

《.Net 最佳实践》 - 学习笔记

o
 osc_zoa3moe9
发布于 2019/12/07 22:52
字数 1612
阅读 11
收藏 0

精选30+云产品,助力企业轻松上云!>>>

《.Net 最佳实践》

========== ========== ==========
[作者] (美) Stephen Ritchie
[译者] (中) 黄灯桥 黄浩宇 李永
[出版] 机械工业出版社
[版次] 2014年01月 第1版
[印次] 2014年01月 第1次 印刷
[定价] 69.00元
========== ========== ==========

(P001)

开发人员应该对任何称之为“最佳实践”的实践保持一种怀疑态度。

开发人员应该根据他所在的具体环境来选择采用何种“最佳实践”。

(P009)

微软的 Visual Studio IDE 就是一款得到广泛使用的集成开发环境。

(P016)

我仔细阅读了《.NET 设计规范》的每一章,从中我了解到了 .NET 框架是如何构建的。这本书同时还记录了设计构建 .NET 框架团队的思考结晶。通过这本书可以学习到许多非常重要的 .NET 实践,它是一项非常重要的资源。

FxCop 工具可以看成是对《.NET 设计规范》的补充。它会帮助你对 .NET 程序集按照事先指定的规则进行一一检查。

(P044)

在软件项目中,各项活动都不是目标。所有的活动都必须以获得成果为目标。

(P063)

头脑风暴就是促进“想法和经验”合作的方式。

(P065)

只有通过沟通,才能让你的想法成为别人的想法。

(P068)

要安排好工作,把需要动脑的和复杂的挑战性工作放到项目开始时进行。把那些简单和要求不高的任务留到后面去做。为挑战性任务留更多的时间去思考和探索更好的方法很重要。

(P069)

通过学习其他人的经验,就可以在问题发生前预防问题发生。

使用别人的经验是一种高杠杆方法,可以避免困难、费时的问题。

(P071)

经验学习就是对找到的或工作接触到的材料的理解。许多东西只能通过经验来理解。新知识需要通过参与或接触软件技术来获得。技能需要结合技术通过实践来获得。任何书面形式的东西都要通过经验来改进和提高。

(P077)

在捕捉和重新抛出异常的时候,编写一个空的 throw 语句。这是既定的保留调用栈的方式。空的 throw 语句可以确保栈跟踪到方法异常的起源位置,以便帮助调试错误。

(P078)

使用 disposable 模式是 .NET 用来释放本地和非托管资源的主要机制。

(P079)

当 .NET 类型拥有本地资源或 disposable 字段,该类型就应该实现 IDisposable 。

(P081)

语句 using 允许代码去声明实现了 IDisposable 的对象在何时应该被正确释放。

(P082)

为了防止两次调用 Dispose 方法,编写代码时可使用一个 try-finally 块来代替外层的 using 语句。

(P084)

一个未初始化的枚举的默认值是 0 。

在适当的时候显式定义零枚举元素。

(P085)

每当空的实例在语义上等于返回空值时,返回一个空的实例,如 String.Empty 。

定义一个公开可见的字段 static readonly ,以这种方式声明的字段允许改变值而无须客户端程序集重新编译以接收更新值。

(P087)

变量名应该很易理解,变量名必须表明该变量代表的是什么。变量名必须是明确的、正确的和一致的。

(P093)

扩展方法必须被定义为静态类的静态方法,且要确定方法的签名中的第一个参数的前面要放置 this 关键字。

扩展方法不可以扩展一个静态类。另外,如果扩展方法的签名与类型的现有方法的签名相同,那么该扩展方法永远不会被调用。

(P094)

一般来说,扩展方法是一种为封闭类型进行改造的有效方法,可为其添加新的行为和功能。

在某些情况下,使用 var 关键字是必需的。如果要让匿名类型工作,隐式类型的局部变量就是必需的。由于类型是匿名的,开发人员不能明确指定变量的类型。编译器会自动处理所有的匿名类型的隐式类型。

(P096)

在 C# 语言中,引用类型(类、接口、泛型和委托)的变量可分配空值。值类型(枚举、数字类型、布尔类型和用户定义的struct)不能分配空值。

在 .NET 2.0 中引入可以为空的类型,用来为一个基本值类型的变量分配一个空值。这些可为空的类型是 System.Nullable<T> 结构的实例,其中的类型参数 T 是值类型。更常见的是语法 “T?”,是 System.Nullable<T> 的简写,其中的 T 是值类型。

(P102)

从 .NET 2.0 开始,C# 语言就有两种形式的泛型:

泛型类型:使用一个或多个类型参数定义类、结构、接口或委托;

泛型方法:使用一个或多个类型参数定义的方法;

(P103)

随着 .NET 3.0 引入 LINQ,查询进入 C# 并作为一种主要的语言构造,成为 foreach 循环、委托和扩展方法的基础。

(P104)

LINQ 的内容很多。有许多相关的语言特性对 LINQ 来说是必不可少的,包括扩展方法、 Lambda 表达式、匿名数据类型以及分部方法。还有很多关键字和很多查询结构。

(P107)

实体框架 (Entity Framework)、NHibernate 和 LINQ to SQL 都可以提供数据库 LINQ,并且都支持延迟执行。

(P119)

命名约定使用 “<被测试类> + Tests” 的格式来命名包含了测试方法的类。

在测试类 (tests class) 中,单词 Tests 故意使用了复数。它的意思是包含了测试的类,也被称为测试夹具类。

测试方法的名称需要明确以下三个重要的事情:被测试方法; 测试执行的条件;测试通过后的预期结果;

测试方法的命名约定要符合可读性模式,并能清楚表达测试的意图。

这个约定是“被测试方法_指定的条件_期望的结果” (MethodUnderTest_WithSpecifiedCondition_ExpectThisResult)。

3A模式“安排-动作-断言 (Arrange-Act-Assert)”是一种广泛使用和有益的约定。

 

o
粉丝 1
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
学习计划之JAVA多线程

列出我的学习计划顺序和时间。督促自己完成学习目标。 主要目的:学会,了解,使用 JAVA8多线程。 第一步:学习系统知识中的多线程支持 参考资料:《深入理解计算机系统(第二版)》 章节:第六...

zwj021
2014/07/22
8
0
JVM最佳学习笔记---总览

本笔记参照了周志明《深入理解Java虚拟机:JVM高级特性与最佳实践》第三版,读完之后受益匪浅,让我对Java虚拟机有了一个深刻的认识,这也是Jvm书籍中最好的读物之一。我以下图为例做了一个简...

loubobooo
2019/05/31
49
0
编程类开放书籍荟萃(转载)

关于开源图书有人在网络上做了大量整理,本文为大家刊载《免费的编程中文书籍索引》 国外程序员在 stackoverflow 推荐的程序员必读书籍,中文版。 stackoverflow 上的程序员应该阅读的非编程...

行者PHPer
2016/10/09
222
0
迷渡:免费的编程中文书籍索引

本文之前发布过,近半年后,本文作者(迷渡,JustJavaC)大幅度进行了更新,因此再次分享给大家。感谢 @justjavac 和众多的分享者!感谢写作这些文档、手册的人们! 语言无关类 操作系统 开源...

山哥
2015/01/22
637
4
迷渡:免费的编程中文书籍索引

语言无关类 操作系统 开源世界旅行手册 鸟哥的Linux私房菜 (简体) Linux 系统高级编程 The Linux Command Line (中英文版) WEB服务器 Nginx开发从入门到精通 (淘宝团队出品) 版本控制 git - ...

svtter
2014/10/17
11
0

没有更多内容

加载失败,请刷新页面

加载更多

阻塞锁,非阻塞锁,自旋锁,互斥锁

1.阻塞锁 多个线程同时调用同一个方法的时候,所有线程都被排队处理了。让线程进入阻塞状态进行等待,当获得相应的信号(唤醒,时间) 时,才可以进入线程的准备就绪状态,准备就绪状态的所有...

osc_umiwij2c
24分钟前
5
0
Asp.NetCore3.1 WebApi中模型验证

前言   不管是前端,还是后端,做数据合法性验证是避免不了的,这边文章就记录一下Asp.NetCore3.1 WebApi中的模型验证; 传统写法--不使用模型验证   来,先上图:   我相信,应该绝大...

osc_qgfjs4a5
26分钟前
24
0
龙芯开源社区上线.NET主页

龙芯团队从2019年7 月份开始着手.NET Core的MIPS64支持研发,经过将近一年的研发,在2020年6月18日完成了里程碑性的工作,在github CoreCLR 仓库:https://github.com/gsvm/coreclr, 随后受...

osc_bj12kvua
26分钟前
11
0
高并发下浏览量入库设计

一、背景 文章浏览量统计,low的做法是:用户每次浏览,前端会发送一个GET请求获取一篇文章详情时,会把这篇文章的浏览量+1,存进数据库里。 1.1 这么做,有几个问题: 在GET请求的业务逻辑里...

osc_uj3h5gt9
27分钟前
27
0
nginx timeout 配置 全局timeout 局部timeout web timeout

nginx比较强大,可以针对单个域名请求做出单个连接超时的配置. 比如些动态解释和静态解释可以根据业务的需求配置 proxy_connect_timeout :后端服务器连接的超时时间_发起握手等候响应超时时间...

osc_5cok9i01
29分钟前
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部