作者svenlee (KOSS KSC35)
看板java
标题Re: [问题] 适合初学者的「第二本书」
时间Sun Apr 26 19:19:46 2009
更进阶一点的话
可以参考以下几本书
1. Effective Java (2nd Edition)
http://tinyurl.com/effective-java
这本书罗列了许多信条(code),说明了很多Java程式设计应该具有的专业素养与准则
看懂这本书,才真正开始进入professional Java programmer的大门
例如避免instantiate duplicate 的object
尽量使用interface,少用reflection
尽量使用封装,少用继承
为所有exposed API撰写JavaDoc (这个习惯非常非常重要)
..等等
2. Java Performance Tuning (2nd Edition)
http://tinyurl.com/java-performance-tuning
会写程式
写出来的程式可以跑
写出来的程式跑起来有效率
写出来的程式跑起来有效率而且可重用性高
如果想要达到以上第四个阶段,你可能需要这本书
若看懂这本书,大概可以成为更进阶的Java programmer
里头有提到怎麽与JVM互动,当然写Java在大部分的情况下不需要在乎太多底层的细节
但是要写出效能好的code,可能需要跟JVM打好关系,
因为毕竟是JVM在跑你写出来的code
例如
如何避免OutOfMemoryError
SoftReference, WeakReference, PhantomReference的差别与使用范例
如何用工具侦测deadlock
..等等
3. Refactoring: Improving the Design of Existing Code
http://tinyurl.com/refactoring-the-book
很遗憾的,在实务的世界里
很少有自己从头写code的project
多半都要去refactoring别人的code
这本书提到怎麽进行Java refactoring
4. JUnit Recipes: Practical Methods for Programmer Testing
http://tinyurl.com/junit-recipes-the-book
很多新手可能无法想像,一个project或sub project时程
分析需求 设计 实作 测试 上线或交货 後续维护改良
测试的时程可以占掉整个project约一半的时间
专业品质的专案 或 半调子的专案 就差在这里
---------------------------------------------------------
更进一步必须能够透过许多的现有的framework或工具
更快更精确的完成所交办的任务
绝对不能够停在原点,必须随时随地学习
就算以上相关的知识能够融会贯通
但也只是专业的"Java Programmer"而已
如果想要升上去当主管,就要懂得专案管理的诀窍,
专案管理比写程式难的多,包含政治学与心理学都可能是其范畴
真的 看过一些超强的高手,管专案管的一踏糊涂
"人月神话" "与熊共舞" 等都是入门经典
供各位参考
我只是一个小小的Java Programmer ...
※ 引述《zeat (Lucifer)》之铭言:
: 我也同意多写多实作这个意见,
: 举例来讲,
: 虽然我看过书知道网路运作的原理,
: 封包的格式, 传递的方式, 3-way handshake... etc.
: 但也是实际的撰写了相关的程式,
: (现在在撰写一个简易peer to peer的Messager)
: 才真正实作了相关的知识,
: 才真正碰到很多问题,
: 除了网路相关的,
: 还有java相关的,
: 像是控制JLeabl里Icon的大小,
: 或是Layout的应用... etc.
: 所以除了看书, 练习书上的范例,
: 我想最好还是多尝试其他的写法与实作,
: 因为看着书练习可能会了却也忽略了小细节,
: 等到实作时,
: 才又遇到.
: 因此, 多看书是一种方式,
: 但是我想能够多实作是最好的. :)
: ※ 引述《adrianshum (Alien)》之铭言:
: : 强烈建议是真的找些东西来写.
: : 单是看完书, 其实得着有限. 很多东西
: : 非经实际应用是不会理解的. Head First Java
: : 应该已经算是解释得最容易理解的书了.
: : 不怕太冗长的话, Core Java 系列应该算是
: : 详细又清楚的. 再加上 Think In Java 来作为
: : 概念的巩固, 应该够你看上一阵子了.
: : 不过, 我还是觉得, 亲手写一些东西吧,
: : 不然只是纸上谈兵的学习, 你以为看懂了但实
: : 际做起来, 你会发觉你明白的只是文字上的
: : 意义.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.104.84.187
1F:推 zeat:可以偷偷问一下, 为什麽要少用reflection? 我觉得这是好物说 04/26 19:59
2F:推 fillano:代价比较大吧... 04/26 20:24
3F:推 kene:Reflection 慢, 但是够动态, 现在越来越多 framework/library 04/26 22:00
4F:→ kene:都有使用 reflection 简化开发者的开发流程 04/26 22:02
5F:推 tmxcrows:google api中也有使用reflection说QQ" 04/27 00:54
6F:推 TonyQ:绝对不只一半!!!!!! 04/27 06:53
7F:→ TonyQ:reflection 最大缺点是无法在编译期检测,造成系统有不稳定 04/27 06:54
8F:→ TonyQ:的风险 , 不是说他不好, 而是要用的时候要十拿九稳的用. 04/27 06:55
9F:推 zeat:可是用reflection不就是要用在动态(runtime)吗? 04/27 10:23
10F:推 TonyQ:对啊 , 上面讲的就是动态可能造成的问题. 基本上是用得好不 04/27 10:42
11F:→ TonyQ:好的问题 , 只要处理得宜那就没什麽问题. 04/27 10:43
12F:推 TonyQ:有一些场合是reflection 显然比较好用, 不过一般状况很少. 04/27 10:46
13F:推 th19883617:借转~ 04/27 19:09