相信对于很多程序员来说,架构师是他们为之努力的方向,他们希望有一天可以为一个大的系统来设计框架,架构。但在些之前,还需要付出许多,包括时间和精力,更重要的要知道自己的方向。与以前的程序员相比,现在的程序员无疑是幸福了很多,扑天盖地的资料,可以让人很容易得到自己所需要的内容,但是知道自己想要的内容,却成为另外一个难题。在下文中,希望能够结合我个人的一些学习经验来为大家解决一些学习上的问题。
学习设计要做的几件事
1. 从基础做起,不要太看重技巧类的内容,我记得在读大学的时候,每当看来一些小技巧的内容,就会视若珍宝的记下来,象做一个非矩形的窗户,做一个钩子之类的内容,市场上也经常有该类书籍。事实上就象很多小说中所写的一样,在绝对的实力面前,所有的技巧都是无用的。象《Java Pitfalls》一书中有一个例子
Integer.valueOf(100)==Integer.valueOf(100)
Integer.valueOf(1000)==Integer.valueOf(1000)
这两段的执行结果如何,相信大部分人都不会答对,具体结果留给大家自己写代码,但对很多有经验,而且基础好的开发人员,这样的代码是根本不会写出来的,而会写成Integer.valueOf(100).eqauls(Integer.valueOf(100)),因为这里要的是逻辑相等,而不是物理相等。所以对于一个基础好的开发人员,这种技巧根本无用武之地。
2. 设计来自过去,而非将来。无疑,设计是对过去的总结,从而更好的解决现在和将来的问题,现在很多开发人员总是喜欢新技术,新项目,新东西,事实上,对个人开发有最大提升的却是回头去看自己以前写的内容,找到正确与错误的地方,尝试去提练正确的内容和避免错误的内容,从而能够更好的应用在新项目中,总是去学习新技术,做新项目,而忘记提练过去,是无法正确形成自己的经验,也就无法得以进步。
学习设计的书籍推荐
现在市场上关于如何学习设计的书籍可谓汗牛充椟,哪怕尽一生之力,也未必能看的完,总要找些有趣又有用的书籍来看。但即使是只找些好书,也恐怕非三五年能看的完,象大家耳熟能详的《设计模式》,《Head First Design Java》,每个书都可以读破上几次,初学者最容易犯的一个错误就是听了大家的推荐,买上很多好书,然后三天看一本,发现没有明白,再看第二本,还是不明白,于是周而复始,发现还是不明白(自己当年就犯过类似的错误)。
其实如果想学好Java方面的设计,我个人认为五本书足够了,下面我按照建议阅读的顺序将这五本书列在下面,并给出我个人的意见。
1. 《Thinking In Java 第二版》
对于任何一个Java开发人员,就算没有看过这本书,也一定听过这本书的,以个人的眼光来看,这本书并非十分的优秀,但对于一个初入门的Java程序员而言,它能够让你全面的看到Java世界中的内容,如果已经有了两三年的Java经验,这本书就不必细读了,而初入门的程序员还是建议全面的了解一下。
2. 《Effctive Java》
这本书才真正是Java书籍中的王者,它将Java中的编码和设计内容分成了57个章节分别加以详细的描述,如果说《Thinking In Java》可以告诉程序员的是如何做一件事,那么这本书会告诉你为什么要这样做。这本书的作者可谓大名鼎鼎,它曾是Sun的高级工程师,是Java设计的核心成员,大家最重要的Collection框架就出自这位大师之手,他现在凭职于Google,是GWT的设计师之一,他写的这本书连Java之父Gosling都要拜上一拜,怎可不读。
3. 《深入Java虚拟机》
这本书并不如前两本那么有名,或者说虽然有名,认真读下去的人并不多,因为它所讲的内容比较底层,是讲整个JVM的底层内容。但对于一个想学好设计的 Java开发人员,这本书其重量还要重于前面这两本书,它讲了ClassLoader,讲了Security,讲了GC,讲了很多平时听过,碰过但没有见过的内容。我个人推荐全书阅读,重点章节分别是:
v 第三章 安全
v 第五章 Java虚拟机
v 第七章 类型的生命周期
v 第九章 垃圾收集
4. 《设计模式》
如果让大家选择有史以来选择软件开发最重要的书,相信《设计模式》,《人月神话》,《计算机程序设计艺术(The Art of Computer Programming)》,都将成为候选者,但《设计模式》一书在Amzon上从上架至今,一直排在前几名,销量总数排名第一,无疑是很多开发人员中的圣经,虽然这本书已经出版本十余年了,但每次再读他都有全新的感觉。
5. 《重构》
很多人将这本书与《设计模式》并列,称作软工双雄,是Martin Flower的得意之作,虽然我不认为这本书能与《设计模式》比肩,但无论如何,他都是一本经典之品,特别是对于那些初学设计模式的人是很有益处的。
分享到:
相关推荐
《高质量程序设计指南-C++/C语言(第1版)》是浙江大学林锐博士的一本经典编程教材,它深入浅出地介绍了C++和C语言的编程理念与实践技巧。这本书的内容不仅涵盖了语言的基础语法,更注重实际工程中的应用,旨在帮助...
- **软件工具的关键作用**:软件工具是软件开发环境中最重要的组成部分之一,用于辅助开发人员进行软件设计、编码、测试等工作。 - **版本控制工具**:版本控制工具在软件的开发与维护过程中扮演着重要的角色,主要...
"零基础学习软件测试 软件测试基础知识"这个资源包,旨在为那些对软件测试感兴趣但尚未接触过该领域的人提供入门指南。 软件测试是一个系统性的过程,用于评估软件产品的质量,包括功能、性能、兼容性、安全性等...
BLE与传统蓝牙的区别在于,它从设计之初就注重低功耗,采用了许多智能策略来降低能耗,例如快速启动和AES-128加密算法以确保数据安全。 蓝牙技术的起源可以追溯到1994年,由瑞典的爱立信公司发起,后来发展成为蓝牙...
在《移动软件 UI 设计》这门课程中,学习者将深入理解UI设计的发展历程、设计原则,以及如何针对不同类型的移动应用进行有效的界面设计。 首先,对于学习这门课程的学生,有一些前置知识的要求。学生需要具备基本的...
编译原理是一门既深奥又实用的学科,学习它不仅能提升个人的技术能力,还能为将来从事软件开发工作打下坚实的基础。通过合理的规划和有效的学习方法,即使面对这门学科的挑战,也能事半功倍地掌握核心知识。希望以上...
- 该课程不仅教授Python语言,更注重计算机科学的基础概念和范式,如计算理论、编程逻辑和调试技巧。 - 学习内容包括基础的Python语法、数据结构(如列表、元组、字典和集合)、基础算法和测试方法。 2. **...
通过对上述知识点的学习和掌握,考生可以全面提升自己在软件设计方面的理论水平和实践技能,为成为一名合格的软件设计师打下坚实的基础。同时,这些知识点也是软件设计培训课程中的核心内容,帮助培训讲师更有针对性...
本指南涵盖了变电站建设中的关键环节,包括主变压器和高压电抗器系统、站用变压器以及绝缘子串和支柱绝缘子的安装。 1. 主变/高抗系统安装 - 质量目标:确保主变压器和高压电抗器的安装精确无误,提高系统的可靠性...
#### 三、软件设计 - **架构设计**:定义软件的整体结构,包括模块划分、接口定义、数据流设计等。 - **详细设计**:细化模块内部的设计,包括算法设计、数据结构选择、类设计等。 - **设计模式**:学习常用的设计...
通过这个Java毕业设计指南与项目实践,学生不仅能提升编程技能,还能学习到软件工程的完整流程,包括需求分析、设计、编码、测试和维护。这是一个很好的机会,将课堂所学与实际工作相结合,为未来的职业生涯打下坚实...
总之,《高质量程序设计指南(2版)》是一本全面覆盖C++和C语言的深度学习资源,无论是初学者还是有一定经验的开发者,都能从中受益匪浅。通过阅读这本书,读者不仅可以掌握编程基础,还能学到如何编写出高质量、...
本文档适用于软件的设计、开发、测试以及后期的维护和升级,同时也作为与用户沟通的基础,以确保软件的功能与性能符合用户预期。 1.3 术语词汇表 - 学习札记:指学习过程中产生的各种文字、图片、音频等记录。 - ...
《软件设计师真题05-08:历年试题解析与学习指南》 软件设计师作为信息技术领域中的关键角色,其专业技能和理论知识的积累对于个人职业发展至关重要。本资料集合了2005年至2008年的软件设计师考试真题,是备考者...
《软件设计师考试大纲指南》是为准备参加软件设计师资格认证考试的考生提供的一份详尽的参考资料。...通过深入研究《软件设计师考试大纲指南》,并进行系统性的学习和练习,考生将更有信心面对这一挑战。
总结来说,《2017年软考软件设计师考试培训指南与大纲》为考生提供了一份详尽的复习计划和知识要点,其内容覆盖了计算机科学与软件工程的基础知识和实践技能。考生在复习时,应结合考试大纲,对每一部分的知识点进行...
网页设计与制作是一门至关重要的专业基础课,尤其对于软件技术专业的学生而言。这门课程以前导课程计算机基础为起点,随后衔接数据结构、面向对象程序设计、ASP.NET程序设计和Java Web程序设计等进阶课程。通过学习...