前言:清明时节雨纷纷,路上行人欲断魂。借问酒家何处有?牧童遥指杏花村。对于清明节,想必杜牧这首诗确定会让你呼之既出。今天是清明放假的最后一天,打扫完家里的卫生,我就必需要抓紧美好的时光来记录下《高效能程序员的修炼》一书第三章“高效编程之原则”的读书札记。
永远都是你的错误
在怨天尤人以前,咱们应该作好自我检讨,努力先把自身的问题解决了。
这个原则永远都必须去遵照,不少时候,包括我,在遇到一个编程问题的时候,老是“不由自主”的埋怨到:“这TM都谁写的代码啊?”、“这确定是你的问题,你好好看看”、“jar包是旧的,先换个jar包再说”、“明明代码没有错,怎么回事”。这些想法容易让咱们失去理智,忽略自身的问题,而将错误归咎于他人,而这些都将影响到咱们解决问题的效率。
在报告的错误中,有95%是由程序员形成的,2%是有操做系统形成的,2%是其余软件形成的,1%是由硬件形成的。
OK,在出现问题的时候不要再逃避责任了,无论代码是否是由你编写,只要是你须要负责的,你就必须把责任扛下来。从本身写的代码找起,直到你找到确凿的错误。我相信,你确定会有这样的感受:
当你找出一个他人的问题时,你会无比知足,由于你在这方面超越了他;当你找出一个自身的问题时,你会很是窃喜,由于终于省得被别人嗤笑。
大道至简
if(s==String.empty)
if(s=="")
|
看完上面的代码,你想用哪种?对于这两种代码,没必要争吵,我我的认为我会使用第二行代码,由于它更加简洁和直白,我喜欢纯粹和简约。
代码不是什么好东西。代码会随着时间的推移而渐渐腐烂,代码须要周期性的维护。
显然,我认为代码是好东西,可是代码的确会随着时间推移而腐烂,这其中的缘由不是代码很差,而是随着时间,你的能力获得了提升,这个时候,回首往日依稀岁月,你会发现你原来的代码的确很烂,那么就修剪他们吧,让他们更加的纯粹。所谓更好,也就是更简,仔细看看我家的洗衣机,我真心以为它太过复杂,面板上那么多功能都是废弃的,我甚至都懒得去用他们,真正的产品,不能为了显示本身的功能有多强大,而是让咱们消费者做为真正的受用群体。
避免写注释
你应该专一于编写代码,而忘了注释这种东西。
显然,避免写注释是个好想法,由于高手的代码自己就孕育着注释,他们不会写无聊的注释来解释这段代码的功效。然而只有代码没有注释是一种渐变的过程,就如同咱们看过的古装武侠小说,小喽啰都是在寻找各类各样的秘籍,高手会只钻研一门技艺,如九阴白骨爪,而最强的高手,每每都是扫地大爷,随着年龄和觉悟的增加,咱们会最终实践这条原则。
很不幸,我所处的阶段还不容许我任何注释都不写,我也尚未达到重构个人代码直到它不须要任何注释。对于这个方面,咱们不须要太过纠结,毕竟能力所限,主要咱们的注释和代码交相辉映就perfect了。由于注释能够帮助咱们记忆,而且理清复杂的思绪。
学会读源代码
不关文档上怎么说,源代码才是最终的实现,是你所能找到的最新的、最准确的、最好的文档。
在读源代码这方面,个人能力和意识还很是欠缺,也是亟待增强的。从意识形态上,我还处于一个阶段就是:“源代码太过复杂,读读文档就能解决问题了”。这个想法在不少时候,让我陷入困局,我花费了大量的时间去找度娘,在茫茫大海中寻找着我想要的答案,而最终的都让我失望而归。
而在我冷静下来,尝试去翻阅源码的时候,结合自身的开发逻辑,很快就能定位到问题的真正所在。下面是书中我认为很是好的论断,我以为我须要照搬过来:
有些时候,文档是不完整的,甚至是错误的,而源代码历来不会说谎。对于有经验的程序员来讲,看源码远比看文档要快些。
我鼓励开发人员在源码中畅游,起初,他们很惧怕。“那个项目太大啦,我永远没法把问题找出来!”、“我没那么聪明,看不懂那些代码”,如今,他们都感谢我强迫他们在别人的代码里潜水。
若是一个软件在个人机器上运行,那么它就是个人软件,我必须负责到底。
那么无论怎样,强迫本身钻进源码中吧!
向橡皮鸭求助
当你看到这个标题的时候,你确定会好奇或者惊诧,向橡皮鸭求助个毛线啊。做者对于这个标题有一个故事,我就不须要赘述了,你固然能够买书本身看看,这本书太棒了。
在向别人求助的时候,首先把问题抛给本身,看看本身是否有解决之道。向别人提问题的时候,书写的方式要尽量站在解决问题者的角度,也许等你把问题写完的时候,你就豁然开朗了。向橡皮鸭求助,是一种态度,那就是彻底投入地向一个没有生命体的物体问一个详尽的问题。
- 用足够多的细节来描述发生的情况。
- 告诉咱们你为何须要知道答案。
- 说一说你为了这个问题都作过什么研究,你不能什么都不作就跑出来要答案。
- 想要从别人那里得到答案,就必需要舍得付出,什么都不是无偿的,别人若是要回答你的问题就要花费必定的时间。
我忽然有一个想法就是,诸如京东的购物评价,若是真的作的好的话,就不该该容许出现毫无价值的评价“很不错。。。。。。。”、“还好了。。。。。。。。。。。”这种只是为了获取20个京豆的评论都必需要去除,评论是为了帮助下一个消费者的。
- 我碰到一个问题
- 我决定把这个问题提到CSDN
- 我很笨拙的写下个人问题
- 我意识到这个问题根本说不通
- 我从新思考我该如何提出问题
- 我意识到我正在一个彻底错误的方向上解决这个问题
- 我从头再来,发现很快解决了问题
OK,若是你也曾发生做者所说的这种情形,我想,就这样去作吧,也许你本身就解决了本身的问题。
创新以人为本
“哎,我这个想法不错,我以为真是一个别人都想不到的创意,你以为怎么样,是否是很想赞美我啊?”
我无不自豪的向同伴炫耀道,同伴不假思索的回答道,或许是带有一丝嘲笑:
“哎呀,不错啊,不过好像一文不值啊”。
了解苹果历史的人都知道,图形化界面并非苹果率先提出的,而是一家叫作“施乐”的公司提出的,而乔布斯“偷窃”了这个创意,使其成为苹果电脑的表明做,然后来,微软显然一样剽窃了这个创意。为何苹果和微软会成功,施乐会失败。真正的缘由不在谁剽窃了谁的创意,而是谁更愿意把想法付诸于实践,只有付诸于实践的创意才具备价值。
若是你把一个好的创意给一个普通的团队,他们会把它搞砸,若是你把一个普通的创意给一个号的团队,他们会加以改善。
因此说,不要太在乎你的创意有没有被剽窃,而是关注于执行,若是你的想法本身没法去执行,那么就会失去其价值。因此我要告诫本身,若是我有一个好的想法,我必需要和个人团队一块儿,把他实现,不然毫无价值。
你的团队经过了电梯测试吗
电梯测试,就是所谓的在电梯的升降过程当中,你如何向同处于一个电梯以内的客户推销你的产品,你能在短期内得到成功,仍是一无所得。
不少时候,我问同伴,你在干吗,回答最多的是,在写代码啊。和程序员沟通就是会很累,他不会告诉你他在实现一个让服务器时间和客户端时间同步的功能,除非你打破砂锅问到底。
这个原则无非就是告诉咱们程序员,咱们不只仅是在敲代码,咱们要明确咱们在创造一个什么样的价值体系。不少时候,爸妈问我,“
编程都作些什么啊?”我回答:“
反正说了你也不懂。”如今我意识到,个人回答也许就会改一改:“编程作的有:咱们可让手机接通电话,能经过咱们编写的代码让你听到我在说话,同时让你听到我在说话”。
性能致胜
网站载入和显示的速度越慢,使用它的人就越少。
看看CSDN的评论机制吧,你好不容易写了一大串的文字来做为对别人文章的评论,然而等你火烧眉毛的点了确认后,god来了,按钮会
灰掉持续很长一段时间,而且久久看不到你是否已经评论有效,我常常都是从新打开一个网页,在上面刷新看看个人评论是否有效,而后再关闭前一个提交中的网页。求求CSDN,好好的优化一下吧。
做者提到一个观点是“善待匿名用户和注册用户”,我以为这个观点足够的好,不管是匿名用户仍是留有其名的用户,咱们必需要可以为他们都创造很好的体验效果。个人客户老是有一个我没法忍受的观点,老是让我把旧的代码、性能差的交易平台代码给一些他认为烂的交易所用,我这个时候,老是会有一股无名业火,我以为这种作法,太过狭隘。
性能好,才能抓住客户的心理,进而带动更大的潜在用户,而不是用劣质的代码敷衍那些咱们看不起的客户。