|
|
Posted on 2005-07-20 11:16 idior 阅读(4408) 评论(33) 编辑 收藏 所属分类: Design 、 Misc
任何事情如果有先行之人对你加以指引, 那么对你无疑将起到巨大的作用,而且这种作用往往不是以+的方式,而是*的方式推动你的前进. 在学习面向对象,模式以及设计的路上, 如果你有兴趣,希望我能给你一点指引. 我不知道大家上班以后是否还读书,又或者每个月读几本书. 不管怎样, 我还是强烈建议你每个月去读一本书(不一定要读完). 在有了项目经验的情况下, 读书会让你有更快的提高速度. 下面是我的推荐书目: 入门: 如果你是.net程序员, 那么<<Applied .Net Framework Programming>>     是必读的一本书. 在深入了解基本语言之后,如果你之前的项目中尚未灵活运用过多态. 那么<<Design Pattern Explained>>     也是必读之书.这是一本让我有冲动想一天 读完的技术书, 而且内容浅显易懂, 可以带你登堂入世. 提高: <<Refactory>> 不错的书, 好好体会一下重构的思想.     <<TDD>> kent beck自己写的, 想体验TDD的人就读这本吧     <<Agile Software Develop>> 看过的人都知道它的精彩, 其中有关一些面向对象基本原则的介绍是 其他书所没有.必读 !     <<Design Pattern>>在看过以上书之后,再来看这本被很多人认为难懂的书,相信你能理解它的思想了. 也是必读      在此过程中,建议自己用模式解决一些小问题,比如写一些demo小程序,发布在blog上和别人一起讨论一下.
深入: <<Hibernate in Action>>这本书对我来说比较重要, 其中持久层设计的思想对我影响较大.看完它 再看POEAA,理解更深入一些     <<Patterns of Enterprise Application Architect>>    很多概念的总结, 建议看前面的总结, 后面的具体实现,大多被目前的框架和容器所支持, 无需自己实现, 如果要自己开发框架和容器建议 仔细阅读. <<Core J2EE Patterns>>搞java的不用说了, 就是.net程序员也强烈建议阅读, 同样也是前面的总结非常 优秀.比POEAA好懂.     <<Expert One on one J2EE Development Without EJB>>让你明白EJB的失败之处.以及为何当今有如此多 的轻量级容器和框架,它们各自解决了什么问题, 避免你迷失在众多的java技术之中. ***** <<Domain Driven Design >>    文字晦涩难懂,不过内容十分精彩,需要多次阅读, 本人尚未\ 读完,不过强烈推荐.
后面提到的几本书,个人也尚未读完. 希望这份书目能给你的学习提供参考意见. (以上书全是指英文版,中文版本人未读过不敢保证质量,注意以上入门不是指初学.Net,注意标题) 我指引完了, 谁来帮帮我, 指引一二? 欢迎任何的建议,不限于书目等等. 如果你也有""必读""书(不论基础或高层,不管哪方面)想要推荐,请在此留言.谢谢!
Feedback
<<NHibernate in Action>> ---->
应该是<<Hibernate in Action>>吧
有一句话--很多有经验的人通常没有时间写书,但没有经验的则有很多时间写书——结果很可能脱离实际——这往往能从书中的示例看出来,示例都是一些远离实际应用的东西,这样对于读书者来说,结果就是看了书也不会开发软件。
所以,窃以为,千万不要以为看了几本书就能开发实际可用的甚至优秀的软件了,中国古人云:尽信书则不如无书。对于我来说,没有一本是“必读”的。
楼主推荐的应该都是不错的书,不过我大部分都没有读过。
我从来不看技术方面的书。呵呵。
推荐必读:《三国演义》,适应于各种职业各种场景。
◎ocean :
有同感,技术的书用到的时候再看,平时不如多看人生,社会,职场等方面的书。
<<Design Pattern Explained>> 这本书真的不错吗? 早知道就搞来看看了,呵呵
恩,同意《ASD》是必读书。
请楼主介绍一些面向对象实践方面的书吧.
面向对象的概念已经比较了解了,可是如何在实践中把它用上,我还差得远. 或许是过程设计太多了,或许是我写软件的目的是为了解决自己的问题,所以对OO应用很差,向大家学习.
@James
我想问一下,你真的了解这些书的作者吗?
他们没有很多经验?
据我的了解很多作者都是相当有经验的,甚至经常处于开发一线!
我只读过这几本,而且每本都还没完全领会呢,呵呵。
<<Applied .Net Framework Programming>>
<<Refactoring>>
<<Agile Software Develop>>
<<Design Pattern>>
<<Patterns of Enterprise Application Architect>>
对经常写代码的严重推荐看看:<<Refactoring>>
把它列为入门级会不会不太恰当啊,呵呵
其实写好代码也是相当不容易的。
@冰火 :
我只是提醒下子,我并不是指具体哪本书。
虽然说尽信书不如无书,但是不读书程度再高也非常有限,这是必然的。
我想James 的意思不是书的作者没有经验,而是读这些书的人没有经验(没有实践的环境,当然我是指国内)
<Applied .Net Framework Programming >
被列为入门级? 如果你用.NET没超过两年,而且不准备再未来3年内持续使用.NET,我建议你别看
我倒认为入门级的门槛太高,提高级的高度不高,深入级的方向太散
不过这些书倒都是重量级的好书.
深入的dotnet书应该算《dotnet本质论》
<Applied .Net Framework Programming > 和它比起来已经是入门书了.
近来在看《软件业的生存之道》,很有意思
http://www.china-pub.com/computers/common/info.asp?id=24503
倪光南作的序
近年来, 中国不但还没有出现世界级的软件企业, 而且一些统计数据反倒表明, 中国软件企业在头五年的失败率高达25%左右, 这说明中国软件企业亟需提高自己的生存和发展能力. 在这种情况下, 著名软件专家Michael A. Cusumano教授的《软件业的生存之道》一书的出版无疑是一个好消息. 一切从事和关心软件业的人, 无论是管理者还是程序员, 是创业者还是投资者, 是政府工作人员还是软件爱好者, 都可以通过本书获取对软件业的真知灼见. 尤其是, 本书为如何将软件视做商务, 如何成功地运营软件商务, 提供了系统的. 切实可行的指导.
本书首先强调了软件企业策略的重要性, 指出了有关产品. 市场和策略定位的基本问题. 主要是:是成为一个产品公司还是服务公司?公司的销售是面向个人还是企业?产品或服务是水平化(广泛化)还是垂直化(专门化)?如何保证持续不断的收入?如何定位主流用户?是成为市场的领导者还是追随者或配套者?等等. 显然, 企业在这些问题上的任何失误都可能导致失败, 因此, 本书更值得软件行业的管理人员. 程序员和企业家们仔细阅读.
在上述这些策略中, 作者重点论述了软件企业的“业务模型”问题. 作者从探究软件业的起源出发, 说明软件行业是从系统软件和服务发源的, 后来发展出独立的软件产品业务, 个人计算机和互联网的兴起大大促进了软件行业的发展, 这包括服务业务. 产品业务和两者混合的业务. 作者认为, 至少对于企业软件领域的公司而言, “选择的关键不是简单地成为一个服务型公司还是产品型公司, 而是确定这两种类型的业务的比例各占多少”. 而且, 作者指出:公司和它的产品越“成熟”, 服务就越加可能成为持续收入的源泉, 当经济大环境不利于技术投资, 或是当老产品销售得不好时, 服务可作为稳定的收入源. 作者的这些论断不难从IBM业务的成功转型上找到例证. 另外, 比尔?盖茨先生也强调, 软件就是服务. 微软正通过改变其产品的许可方式, 力图将其业务向“服务”转变. 所以, 作者关于“业务模型”的论述经得起实践的检验.
本书也简要讨论了开放源代码软件对于软件业的影响. 作者认为, 开放源代码软件使全世界软件工作者都可以参与到软件的创新过程中, 它促进了软件业的竞争并提供了新的商业机遇. 这里, 我们应该补充说, 如果从中国软件业的前途考虑, 那么开放源代码软件提供的机遇是十分重要的, 如果没有它, 中国软件业就只能做平台“追随者”或“配套者”, 而正如作者所指出的那样, 成为“平台领导者极有益”. 开放源代码的Linux可以使中国软件业具有自主平台, 摆脱平台“追随者”或“配套者”的从属地位, 获得“平台领导者”的优势(或至少是部分优势).
虽然本书不是专门讨论软件开发, 但是本书对软件开发的论述极为精辟. 软件开发是任何软件公司最基本的技术任务, 由于涉及到大量软件人员及其智力活动, 其复杂性不言而喻. 而且, 不同类型的软件开发的差别很大. 例如, 做一个需求明确. 可靠性要求极高的航天控制软件显然不同于做一个需求多变. 市场竞争性极强的个人电脑软件. 同样, 做自主设计的软件也显然不同于按既定设计接受外包任务.
近年来, 在印度经验的影响下, 中国的许多软件公司都为获得愈来愈高的CMM级别(即SEI提出的“软件能力成熟度模型”)而努力, 如果这些公司是做外包业务的, 如果它们有足够的资源, 一般来说这是有效的. 但这在任何情况下是否都是最佳的选择呢?这是否是提高软件开发能力的惟一模式呢?作者通过对世界著名软件企业的调研明确指出:“SEI方式看上去最适合大型企业针对相对稳定的市场开发复杂的企业软件”.
由于软件开发的内容差别很大, 没有一种方式能够满足所有软件公司的需求, 对于市场变化迅速的软件产品开发, 作者认为, 微软和Netscape等公司的“同步与稳定”技术更为合适. 这些软件公司在快速变化的市场中竞争, 他们要求既能尽快将产品推入市场, 又能尽快添加产品的新功能, 而又不致过度影响产品的质量. “同步与稳定”技术的核心在于:“鼓励程序员创新和试验, 并通过尽可能频繁地进行产品的‘构建’(工作版本), 来和其他组员同步他们的设计, 然后在进入到下一项开发任务之前周期性地稳定(调试和集成)代码”. 作者的这些论述可以使中国众多软件企业开阔眼界, 在提高软件开发能力方面得到宝贵的启示.
近年来, 中国举国上下对于软件业愈来愈重视, 但投资者往往仍对软件业裹足不前, 因而资金问题严重地制约了中国软件业的发展. 其实, 投资者不理解软件业是情有可原的, 因为软件业太特殊了, 它和所有其他的行业都不同. 那么, 怎样使投资者理解软件业呢?怎样使他们把握投资软件业的诀窍呢?本书所提出的关于评估软件企业成功的八点基本要素, 以及对十个新创业软件企业的个案分析可以作为一部生动. 实用的软件业投资教材, 同时, 它也为软件企业创业指明了更好地争取投资者支持的途径.
“软件具有改变世界的能力. ”Cusumano教授的这句话概括了软件的魅力. 我们不妨将这句话再引伸一下:软件具有改变中国的能力, 软件具有改变世界的能力. 而研读本书将能帮助我们掌握这种非凡的能力.
中国工程院院士. 中科院计算所研究员 倪光南
2005年2月于北京
@ccBoy
入门不是指c#入门. :)
也可以给出你的推荐啊.
@Phoenix
看看Applying uml and patterns.有一个面向对象开发全过程的介绍.
看来照james的看法,中国程序员(特别是有经验的)不太喜欢看书啊. 寒一个.
技术的书用到的时候再看,这个肯定是错的.
平时不如多看人生,社会,职场等方面的书。
james推荐一下.
我已经说了,我需要别人的指引.
<<Applied .Net Framework Programming>>
<<Design Pattern Explained>>
这两本书作为入门级,我没有异议,确实不是太难吧。
当然这是对有过一些企业级开发经验的人来说。
人的精力有限——工作就比较繁忙了,通常生活中还有很多事情需要去处理(特别是你有了家庭以后),剩下的时间基本上很少了……所以工作的人不同于在学校上学的学生——对idior你来说,当然是要多学习理论知识了。
就我自己而言,工作中需要用到什么就学什么,当然我会有一定的计划性,不是到火烧眉毛了才看书。
Applying uml and patterns这本书确实不错
这本书被Martin Flower也称为入门级的哦。不过我觉得真要理解还不是那么简单的。
UML 精粹 也不错啊,不过很多人说翻译的不好,不过对于我来说,看的懂就可以了。
快速软件开发 也不错。
还有太多太多的啊,其实这怎么好列呢。
@James
能体会大家的辛苦. 不过,个人还是希望上班后也能坚持看看书.我想ccboy和冰火就常看吧. 向他们学习:)
偶觉得一定要多读书,才有进步,否则就会固步自封,落伍了还不知道!
但是一定要读好书,不好的书读了还不如不读。所以偶只读推荐为经典的书籍,例如楼主推荐的……
对不起,涉及版权问题,不便在此提供。我可以保证网上能找到。
◎ttyp
谢谢,能否推荐几本
汗,我的书库里竟然没有《<<Applied .Net Framework Programming》....
是呀,我也经常读书,都是入门的,没看过你说的那么高深高难的,知道哪些是好书,都是英文的,对我来说就是垃圾。
我推荐几本我看过的好书《asp.net电子商务高级编程》《asp.net安全性高级编程》《asp.net windows应用高级编程》《asp.net企业应用高级编程》《ASP.NET WEB站点高级编程》,《C#网络核心编程》以上6本是我去年倒现在一直在看的书,我.NET入门看的书是《高效掌握ASP.NET》《高效掌握c#》,
跟您相反,偶看的都是具体技术的书,很少看软件开发方法,技巧,软件工程,项目管理那样的书,另外再推荐一本《javascript宝典》也是我看过的很不错的书,软件项目的书买了一本《如何管理好一个IT软件项目》外国人写的,从需求分析,风险评估,进度管理到最后测试,验收,上线都有个介绍。
我也上班了,但仍然坚持看书,其实时间是挤出来的, 我看的或即将看的书:
.net:
<<Applied .Net Framework Programming>>
<<Inside C#>>
做.net的,我感觉有这两本书就足够了.
设计模式:
--<<设计模式-可复用面向对象软件基础>> Gamma等著
--<<java与模式>> 阎宏
--<<Applying uml and patterns>> Cragin Larman
此书出了第三版了
--<<企业应用架构模式>> Martin fowler
UML:
<<UML Distilled 3>> Martin fowler
<<UML用户指南>>
这些书无论java程序员和.net程序员都要读的,属于练的"内功".
相比之下java和.net就是"外功"了
@clamphammer
有幸的是你说的书我基本上都读过了。 现在对下一步有点迷茫, 希望有人能指点一二。
可以看看最近两年获jolt奖的书,我一般是到amazon上去,看看某个领域的星级比较高的书,然后去用eMule下载,一般都下的到。国内的出版市场最起码和外国有两年的时差。
而且有时候中文版比英文版先出来,翻译很少有翻译好的,我一般都看英文版。
Domain driven design:
Domain-Driven Design - Tackling Complexity in the Heart of Software
Domain Architecture Models and Architectures for UML Applications, Jun 2004, Daniel Duffy
职责分配:
Object Design - Roles, Responsibilities, and Collaborations
MDA的基础 OCL:
The Object Constraint.Language 2ndEd
需求分析:
编写有效用例
一般比较新的就要看杂志上的文章了. citeseer, jot上都可以找到
我一般都是看这些书后的参考文献去查。
除了OO以外,我感觉网格计算是一门值得研究的技术。
现在OOD的书很多,不知道哪些讲OOA比较好的,请推荐几本?
我的MSN :guruzyj#etang.com
ccBoy说的是对的,没有2年的经验看Riche的书是很难有深的体会,另外人的一生不知道能否有机会做类库和框架级别的开发,我有莘在做数据提供者的开发,但是感觉知识很有限,一年前看了Riche的书,发现理解了一些,但是一到写程序就忘了,呵呵还是自己功力不够啊,希望大家不要浮躁,现在的环境太浮躁了.另外我最近在边写代码边看<<从重钩到模式>>发现该书很不错,真的.
|