编写高质量代码 ——改善Java程序的151个建议
在学习和使用Java的过程中您是否在原本可以很快掌握或解决的问题上耗费了大量的时间和精力?也许您现在不用了,本书的很多内容都是我用曾经付出的代价换来的,希望它能帮助您少走弯路!
希望本书能帮您打牢基础
那些所谓的架构师、设计师、项目经理、分析师们,已经有多长时间没有写过代码了?代码是一切的基石,我不太信任连“Hello World”都没有写过的架构师。看看我们软件界的先辈们吧,Dennis M.Ritchie决定创造一门“看上去很好”的语言时,如果只是站在高处呐喊,这门语言是划时代的,它有多么优秀,但不去实现,又有何用呢?没有Dennis M.Ritchie的亲自编码实现,C语言不可能诞生,UNIX操作系统也不可能诞生。Linux在聚拢成千上万的开源狂热者对它进行开发和扩展之前,如果没有Linus的编码实现,仅凭他高声呐喊“我要创造一个划时代的操作系统”,有用吗?一切的一切都是以编码实现为前提的,代码是我们前进的基石。
这是一个英雄辈出的年代,我们每个人都希望自己被顶礼膜拜,可是这需要资本和实力,而我们的实力体现了我们处理技术问题的能力:
你能写出简单、清晰、高效的代码?——Show it!
你能架构一个稳定、健壮、快捷的系统?——Do it!
你能回答一个困扰N多人的问题?——Answer it!
你能修复一个系统Bug?——Fix it!
你非常熟悉某个开源产品?——Broadcast it!
你能提升系统性能?——Tune it!
……
但是,“工欲善其事,必先利其器”,在“善其事”之前,先看看我们的“器”是否已经磨得足够锋利了,是否能够在我们前进的路上披荆斩棘。无论您将来的职业发展方向是架构师、设计师、分析师、管理者,还是其他职位,只要您还与软件打交道,您就有必要打好技术基础。本书对核心的Java编程技术进行了凝练,如果能全部理解并付诸实践,您的基础一定会更加牢固。
希望本书能帮您打造一支技术战斗力强的团队
在您的团队中是否出现过以下现象:
没有人愿意听一场关于编码奥秘的讲座,他们觉得这是浪费时间;
没有人愿意去思考和探究一个算法,他们觉得这实在是多余,Google完全可以解决;
没有人愿意主动重构一段代码,他们觉得新任务已经堆积成山了,“没有坏,就不要去修它”;
没有人愿意格式化一下代码,即便只需要按一下【Ctrl+Shift+F】快捷键,他们觉得代码写完就完了,何必再去温习;
没有人愿意花时间去深究一下开源框架,他们觉得够用就好;
……
一支有实力的软件研发团队是建立在技术的基础之上的,团队成员之间需要经常地互相交流和切磋,尤其是基于可辨别、可理解的编码问题。不可否认,概念和思想也很重要,但我更看重基于代码的交流,因为代码不会说谎,比如SOA,10个人至少会有5个答案,但代码就不同了,同样的代码,结果只有一个,要么是错的,要么是对的,这才是一个技术团队应该有的氛围。本书中提出的这些问题绝大部分可能都是您的团队成员在日常的开发中会遇到的,我针对这些问题给出的建议不是唯一的解决方案,也许您的团队在讨论这一个个问题的时候能有更好的解决办法。希望通过对本书中的这些问题的争辩、讨论和实践能全面提升每一位团队成员的技术实力,从而增强整个团队的战斗力!
本书特色
深。本书不是一本语法书,它不会教您怎么编写Java代码,但是它会告诉您,为什么StringBuilder会比String类效率高,HashMap的自增是如何实现的,为什么并行计算一般都是从Executors开始的……不仅仅告诉您How(怎么做),而且还告诉您Why(为什么要这样做)。
广。涉及面广,从编码规则到编程思想,从基本语法到系统框架,从JDK API到开源产品,全部都有涉猎,而且所有的建议都不是纸上谈兵,都与真实的场景相结合。
点。讲解一个知识点,而不是一个知识面,比如多线程,这里不提供多线程的解决方案,而是告诉您如何安全地停止一个线程,如何设置多线程关卡,什么时候该用lock,什么时候该用synchronize,等等。
精。简明扼要,直捣黄龙,一个建议就是对一个问题的解释和说明,以及提出相关的解决方案,不拖泥带水,只针对一个知识点进行讲解。