野鸭鸭

通读《C# 6.0 시작하세요》的感想

这段时间,我一直看很早之前买的韩国微软MVP出版的C#6.0入门。书买来已经有一年时间了,但是我才看了只有大约10分之一。从12月到现在,差不多快一个月期间,我终于持续不断地将这本书的主要部分完成了通读,并产生了一些感想。

一边初级编程的书,用去一半页数教你培养编程的思维,而不是技术。这本书并不急于让你能成功编写一个Hello World,然后在其基础之上,进行敲敲打打,而是让你之其然的同时,还告诉你之其所以然。

比如,全书共700来页。其中前半部分的重点,并不在于介绍加减乘除和字符拼接之类的,主要在进行这样的一些内容讲解:

  • 学会将现实世界中的物体和逻辑进行程序抽象化转换。
  • 一步步将一段看起来“没毛病”的代码不断精炼成真的没毛病的高效代码。
  • 通过以上两点的抽象化和代码演练,N次强化OOP的精髓:封装、继承和多态。

在这其中,其实会引入很多并不那么初级入门的概念,像接口、继承、线程等。初级入门人员,很难在短时间内,快速掌握这些具有一定难度的编程概念,但是不妨首先Get到这些思维。那么,剩下来的就是通过项目和代码来实践思维了。

对于像我这种,半路出家做开发的文科生来讲,很多开发思维真的可以说是无比抽象。比如,刚开始学C#的时候,仅仅是数字就可以分为int、float、double、decimal等等就足够让人目瞪口呆很久了,接下来是class,几乎花了一个星期的时间,每天抱着书本,在网上找,关于class定义的解释。然后,卡在了interface和delegate,花了很多功夫,见到大神就抱大腿,可是结果还是不理想。即便是到现在,对于这些概念都还是非常模糊,更别说实际使用了。

刚好,这本书中,对于这些问题的解释都比较详细,案例也非常具体化。除了详细和具体之外,我觉得比我之前看的书籍,还要强烈的一点在于,他的每个案例基本都在引导你学习和建立自己的编程思维。简单归纳一下,比如拿到一个需求之后:

  1. 阐述这个需求的现实状况
  2. 按照常规逻辑完成代码
  3. 主动对当前代码发起“攻击”使其崩溃
  4. 通过更高阶的逻辑完成代码并重新主动发起“攻击”使其崩溃
  5. 重复“攻击”和“完善”直到“没毛病”

比如,我们通常构建“人(姓名,年龄)”这个类的时候,会有好几个重载的初始化版本,分别对应:不指定姓名和年龄、指定姓名但不指定年龄、指定年龄但不指定姓名、指定姓名和年龄的情况。在没有学习this和base关键词的时候,我们需要写很多重复的代码,感觉重载还不错,OOP的代表性产物。

作者在常规逻辑完成的版本之上,引入this和base,帮助减少重复代码。仔细研读发现,比减少重复代码更重要的是,通过层层引用,最终通过指定姓名和指定年龄的重载版本,实现包含其他三种情况的重载。前后对比,瞬间感觉之前的封装,只能说是装,封好像有点算不上了。有一种:原来我那么Low的感觉。程序员鄙视链底端既视感瞬间爆炸!

除了编程相关的东西之外,从书籍推陈出新和内容精细程度上来看,也确实值得肯定。2015年的时候,就适时推出了C#6.0的最新版本书籍,目前已经更新到C#7.1版本。所有演示和讲解的案例,都是通过最新的开发环境进行的。作者还在官网提供了详尽的修正列表,连错误标点符号也不放过。同时,对于所有提及的概念和专业名词,从响应使用英文进行开发的号召角度,作者也都在概念首次出现的时候,标注其英文和释义,帮助理解和记忆。

以后,我也可以根据这本书,整理一个C#编程关键概念和名词的中韩对照列表。

里予甲鸟甲鸟

我有钱,我高大,我帅气,我还没睡醒!谁叫醒我,就打谁哦。

添加评论

联系

即刻M我/Q我