书籍推荐:《More Effective C#》
很多年前看过Bill Wagner的《Effective C#》第一版,涵盖了C#2.0相关语言特性的最佳实践,教我们怎样更优雅地去编写C#代码,当时觉得受益匪浅。最近拿到了《More Effective C#》第二版,目前看了大概三分之二,让我对C#的的应用有了更深入的了解,书虽没看完,但还是要推荐一下。
《More Effective C#》第二版涵盖到了C#7.0的特性,全书分为5个大的章节,类型处理、API设计、异步编程、并行处理和动态编程,我觉得深入理解前三章便能让您在工作中如虎添翼,学习和了解C#中的一些特性,并且能知道在什么场景下使用这些特性,真正做到了知其然也知其所以然。
只要涉及到编程,总会回归到各种数据类型的操作,怎样合理的使用数据类型,怎样避免一些陷进,这些在第一章中都会涉及到,比如在判断两个对象相等有下面一些原则:
不只是给出了实践的方法,更是说清楚了其中的原委。
一个有追求的程序员,一定不甘心每天只做CRUD,随着经验的增长,您可能需要去编写更下游的程序,需要提供安全、好用、可扩展的方法或接口供上游调用,即便您只是写写WebAPI,依然会被各种端去调用,第二章的API设计会让您少走很多弯路。
比如我们平时在设计类时,碰到需要做拷贝的,就会很自然想到去实现ICloneable接口,书中告诉了我们为什么不要去实现ICloneable接口,以及什么情况下可以去实现ICloneable接口。
还有,在调用.NET一些底层方法时,有时会出现很多的重载版本,那么在我们写代码时,会去借鉴,也会写出有很多重载版本的方法。书中建议我们在初次设计方法时,可以利用可选参数和命名参数来设计方法的参数,可以减少方法的重载版本,但发布后,如果有调整,建议添加重载版本。
第三章讲述了怎样使用异步编程,内容虽然不是很多,但如果您已经使用过异步编程,这些会让您理解更加深刻。下面举一个小例子。
在C#7中加入了本地方法的特性,可以让我们在方法的内部写方法,代码如下:
static void LocalMethod(){ string name = "oec2003"; string name1 = "oec2004"; Console.WriteLine(AddPrefix(name)); Console.WriteLine(AddPrefix(name1)); string AddPrefix(string n) { return $"Hello {n}"; }} string name = "oec2003"; string name1 = "oec2004";
Console.WriteLine(AddPrefix(name)); Console.WriteLine(AddPrefix(name1));
string AddPrefix(string n) { return $"Hello {n}"; }}
可能您知道有这么一个特性,但并不知道该什么时候用,在不知道的情况下,为了去使用某个特性,可能出现滥用。书中给出了该特性的一个应用场景。看下面一段示例代码:
public Task<string> LoadMessage(string userName){ if (string.IsNullOrWhiteSpace(userName)) { throw new AggregateException(message: "username is null"); } return LoadMessageImpl(); async Task<string> LoadMessageImpl() { var name = await LoadMessageAsync(); var message = name ?? "No Message"; return message; }}Task<string> LoadMessageAsync(){ var task = Task.Run(() => { Thread.Sleep(5000); return "oec2003"; }); return task;} if (string.IsNullOrWhiteSpace(userName)) { throw new AggregateException(message: "username is null"); } return LoadMessageImpl();
async Task<string> LoadMessageImpl() { var name = await LoadMessageAsync(); var message = name ?? "No Message"; return message; }}Task<string> LoadMessageAsync(){ var task = Task.Run(() => { Thread.Sleep(5000); return "oec2003"; }); return task;}
本文是我阅读到现在的一个最直观的感受,书中的内容我在理解、消化并进行实践后会继续分享出来。总之,好书是需要反复阅读的,直到看到某一小节的名称便能说出它的来龙去脉,才是真正的掌握。
书籍推荐:《More Effective C#》相关推荐
- 书籍推荐:《C#7.0本质论》
在dotNet平台中有多种开发语言可以使用,C#无疑是其中应用得最为广泛的.学习一门编程语言最好的方式就是找一本好书系统地学习,我读过的关于C#的书籍中,我认为下面三本最为经典: <C#本质论& ...
- 计算机专业经典书籍推荐
计算机专业书籍推荐 一.为何要学编程? 每个人的动机不一样.大致有: 1.为了找个好工作:或为了有更好的机会和更好的发展. 2.看到别人超厉害,所以也想学. 3.实际工作中很多场合需要. ...
- 经典算法书籍推荐以及算法书排行【算法四库全书】
经典算法书籍推荐以及算法书排行[算法四库全书] 作者:霞落满天 https://linuxstyle.blog.csdn.net/ https://blog.csdn.net/21aspne ...
- 适合初学者学java技术的书籍推荐!
想要学会java技术,光靠听课是不够的,看书也是非常重要的一步,以下小编为大家推荐的是适合初学者学java技术的书籍,希望能够给初学者们带来帮助. 适合初学者学java技术的书籍推荐! 1. Java ...
- 编程入门python语言是多大孩子学的-我的孩子需要学习Python吗?几岁开始学?有什么书籍推荐?...
原标题:我的孩子需要学习Python吗?几岁开始学?有什么书籍推荐? 最近有一些家长问我,需不需要让孩子学习Python,孩子学习Python有什么作用? 最近确实有看到不少的机构在宣传Python, ...
- 自学python需要买书吗-我的孩子需要学习Python吗?几岁开始学?有什么书籍推荐?...
近年来,全世界各个企业和政府的都非常青睐Python编程语言. 主要编程语言的发展趋势,图片来自 Stack Overflow在GitHub 2017年度报告中,Python 超越 Java 成第二受 ...
- python入门基础代码图-python入门代码指南教程书籍推荐2020总结全集汇总
python入门代码指南教程书籍推荐2020总结全集汇总 记住,如果您想学习Python,市场上有很多可用的资源.这些可以包括书籍,甚至在线课程..在这篇文章中,我们为Python编写了最好的书籍,无 ...
- 十年研发经验嵌入式工程师书籍推荐
从事嵌入式研发行业十年,认为学习就是要不断的吸纳知识,在研发过程中,经常会遇到一些问题,这种发现问题并解决问题的过程就是进步. 为什么选择学习嵌入式? 嵌入式系统无疑是当前最热门最有发展前途的IT应用 ...
- 从零实现来理解机器学习算法:书籍推荐及障碍的克服
从零实现来理解机器学习算法:书籍推荐及障碍的克服 发表于2015-09-10 16:16| 1261次阅读| 来源Machine Learning Mastery| 2 条评论| 作者Jason ...
- python 数据分析 书籍推荐 知乎_Python 爬取知乎 9674 个问答,揭秘最受欢迎的 98 本书!...
原标题:Python 爬取知乎 9674 个问答,揭秘最受欢迎的 98 本书! 作者 | Yura 责编 | 胡巍巍 高尔基这话有没有道理我不知道, 咱也不敢问, 主要是现在也问不了. 那对我来说,读 ...
最新文章
- AngularJs学习笔记(3)--$scope中的$apply和$digest方法
- js 如何实现bind
- deepin ubuntu修改grub启动延时时间
- 继承extends、super、this、方法重写overiding、final、代码块_DAY08
- 输入网址后,浏览器从访问服务器到呈现网页的过程
- java语言程序设计(基础篇) 第2章 基本程序设计 课本源代码
- Gmail推出视频聊天功能 间接否认欲收购Skype
- 宏碁4752G换CPU和显卡导热硅脂步骤
- spss变量视图转数据视图_SPSS的数据视图和变量视图
- 3D游戏建模:3dmax对场景进行布局和建模
- Pearson 相关分析 理论与应用
- 备战蓝桥杯—2014(4)史丰收速算
- .NET Core之EF Core
- VMware虚拟机无法自动获取IP地址的解决办法
- 粉丝看了教程成功发文章了,恭喜一下,并说下近期计划
- Excel匹配两列相同内容到同一行
- 使用selenium模拟登录解决滑块验证问题
- teamviewer出现无法连接伙伴问题
- 亚信Internet中国
- 免费影像数据下载网站汇总——2010年7月28[转自ESRI中国]
热门文章
- linux显示fio为非法指令,FORTRAN运行错误消息列表中英对照.doc
- 面向全球用户的Teams app之夏令时篇
- 多点认证wi-fi_准备使用Wi-Fi 6:认证将于2019年第三季度启动
- twitter批量取消关注_如何在Twitter上取消阻止“潜在敏感内容”
- 如何用grep命令同时显示“匹配行”上下的n行?
- Sonnedix收购意大利11.2MW光伏电站产品组合
- 《编译与反编译技术》—第1章1.7节C语言程序的编译流程
- ELKstack-Elasticsearch各类安装部署方法
- MyBatis --教程
- 淘宝快捷通道——百汇家园