作者Zephyr750 (红莲西风750)
看板CompBook
标题[心得] 几本让我成长很多的书
时间Sat Sep 20 00:32:49 2014
我是用C++这种可怕语言开发的开发者。
从研究所毕业之後,我只会C和verilog
当时,我只念了VerilogHDL学会了Verilog,但是完全只是熟语法...
而C只靠大学课程的印象
一路走来,到了软体公司,才发现业界有些公司其实....说强不强。
我想跟大家分享我看的书以及得到的东西。
希望有兴趣的朋友可以看看....
1. K&R2
这本是很有名的书,一开始会看,完全是因为「C学会了再学C++」的误解。
我看这本书方式,是从第一个字开始看到最後一个字。
因为这本书,让我重新学习C语言,了解C语言的强项与技巧
enum、struct、pointer、funtion pointer....
2. 蚂蚁书
会买这本,有两个原因,第一,这是我大学时使用的课本(虽然版本不同),
第二,它比K&R2介绍了更多「前置处理器」的用法。
但是其实看完了,还是不太会活用,因为不会花太多心思在它身上。
这本书,我只看前置处理器的章节。
3. C到C++入门速成
这本是在义守大学图书馆找到的,其它大学的图书馆似乎不一定有。
这本很特别,是无意间翻到的,它比较了C和C++各个不同之处集结成书。
这本书,是从第一个字开始看,整本看完。
4. 世纪末软体革命、从C到C++物件导向革命
为了了解「物件导向」特别去找了几本,但是都没看完,世纪本软体革命,
我是买复刻版,还有找到其中一个作者签名。(超幸运)
《从C到C++物件导向革命》是抄袭之作...
而物件导向是怎麽了解的呢?
把C++当作verilog写一次,就明白了。瞬间了解类别是什麽!
5. C++ Primer 4/e
我看的是四版,建议看三版,不过五版已经出了。新功能看来都是人家的旧功能!
似乎五版值得买。
这本是和C++爸爸书一起买的,是为了要找C++好书而开始狩猎,这两本圣经本
当然不能放过,让我对C++有了全新的体验。
这本书看到一半,但是因为当时是一边看,一边学,一边练习,所以很紮实。(应该)
学C++有四个阶段
C++ without OO ->做一些C在做的事
C++ with OO
C++ template
C++ general
最精彩的,是OO的部份,const的介绍,return this, return *this的用法、
覆写运算子.....等。
把整个记忆程式的方式,以心智图的方式,物件导向的形式呈现
之後,就常常跟人家说,挑一本好的C++入门书,看它的hello world就知道了!
看它的#include 是放stdio.h还是cstdio还是iostream。
看它是教你printf还是cout
看它的main回传值是void还是int
看它有没有return 0
不是这样做不行,而是身为一本教学书,就要以标准写法为范本。
另外,看别人会不会C++看它的set和get怎麽写的就知道了。
虽然是coding style的问题,但是C++不把持一点,很容易写成泥巴。
void SetValue(const Foo& Obj);
const Foo GetValue() const;
把权限最小化,就是最好的写法。也许你会问为什麽,我只能说,当你要把物件丢
STL到里的演算法使用时,它就会卡这个。
6. 人月神话
这本很有趣,我也忘了当初是在哪看见推荐的了。写了这麽久的程式,你真的了解
自己在做的是什麽样工作吗?写程式有什麽性质?有什麽特性?什麽该做?什麽不该做?
有哪些事是过去前人就说超难做的,会不会不知不觉走到了一个前人有说「要小心
不要往这方向去了」的路呢?
这本是开读书会看的书,从第一个字看,整本看完。
最棒的就是第二系统效应、预估(很难)、巴别塔、外科手术团队
还有最後的「没有银弹」
这本影响我最大的,是它一直提的「整体概念性」是写程式最重要的一件事。
不管是设计、coding还是重构时,其实都用得上这个概念。
7. 软体建构之道2
这本可以说是我个人生涯看了最棒的一本书,也是因为它在Inside的排行榜里排第一名
所以不看似乎对不起自己是程式设计师这件事。
它从设计开始介绍,讲了很多写程式时会遇到的疑惑
这样写也可以,那样写也没错,但是语言这样设计的用意,应该是两种写法不同。
究境是哪里不同呢?一连串在写程式要决策的事情,就是设计师的用心之处
在第八章 防御性程式设计里有提到条件编译的使用方式,还有如何让自己的程式
更强壮或更正确,assert()的使用,最後提到自杀式程式设计来提升
交付程式前的强壮程度。
有看过这种命名的吗?
int temp; string str; return rtn; void doSomething(); float tmpValue;
void setValue(); int getValue();
是不是让程式码与人的距离愈来愈远了呢?
最有趣的是连return的使用方式,它都有介绍!
程式设计做到最後,就像是把中文翻译成程式语言。
class包含物件,与class继承class的差别是什麽?have和is的差别!(超酷的)
前半部,是教你用技术提升品质。
後半部,是教你用管理提升品质。
繁体中文版超贵。建议看简中会顺畅很多,而且还有润句子和校"完"稿....(懂吧?)
当初看是开读书会,同时看简中、繁中、英文。
没有整本看完,看了前半段就放着了。
强烈推荐要看,尤其是有在code review的公司。
这本书影响我最大的是人月神话提的「整体概念性」实作在class、function、变数命名
分析了「整体概念性」与「名字」之间的重要性,还有命名带的隐喻,会影射出概念。
让程式码可读性提高,就像是写文章的譬喻法啦!
8. Effective C++
只能说,要把C++写得像C++就看Effevtive C++。
翻过,跳着看。没细读。它是超棒的书。
很想全系列买下来
之後有看到Effective C#不过只有英文版....
但是,简中有部落格文章唷!
9. 敏捷开发的逆袭
这本是台湾人写的!对敏捷式开发的流派Scrum介绍得很深入,也因此对敏捷式开发流程
有了一个范本,在了解其它流派,会更加的知道这是什麽。
这本书,从头看到尾,很精彩!内容很多。
另外,後面介绍了很多工具在「实作」敏捷开发有很大的帮助(至少有工具),剩下的就是
建立工作流程与工作能力了(单元测试)
10. 大话设计模式
这本是C#的设计模式,是读书会开的书。
从第一个字开始看,整本几乎看完,但是看完还是不懂(这是Design Pattern书的特色?)
有些简单易用的Pattern就可以快速的学下来。
有些难懂的,就先放着,有缘自然就懂了。
看C#的Design Pattern除了因为读书会看之外,
C++这一本实在是一本「Design Pattern DM」,看看具体实例先
而且,C#的写法有些C++都要自己手动来。就会上网多找资料。
这本书并不是每个例子都很棒,但是它会从烂code重构给你看(大多数的例子)
所以,还可以看一下重构的过程,我觉得练习一次很有体会。
我是用C++练习的,所以很多地方不需要指标的,要自己看,
要delete指标的要自己判断一下
以上。
我一直相信,C++之所以难用,是因为它重点在「设计」,
而不是一直使用它既有的语法与功能。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 115.43.209.187
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/CompBook/M.1411144371.A.A44.html
※ 编辑: Zephyr750 (115.43.209.187), 09/20/2014 00:43:29
1F:推 ifelse : 借转C_and_CPP板,感谢。 09/20 08:53
2F:推 ifelse : 好文值得推荐。 09/20 09:15
※ 编辑: Zephyr750 (115.43.209.187), 09/20/2014 11:26:18
※ 编辑: Zephyr750 (115.43.209.187), 09/20/2014 11:39:41
3F:推 ZenLife : 推~写得不错,借转Soft_Job板,谢谢。 09/20 14:26
4F:推 coolrobin : 推 09/20 20:33
5F:推 myBelle520 : 推~~ 09/21 16:17