标签 程序员 下的文章

在你重构之前

本文翻译自"Before You Refactor",来自于《97 Things Every Programmer Should Know》一书中的某个章节。

在某些时候,每个程序员都需要重构现有的代码。不过在你动手之前,请考虑一下下面的内容,因为这可以节省你和他人的大量时间(以及痛苦)。

· 重构开始的最好方式就是对现有代码库及其测试代码进行总结和评估。

这将帮助你理解现有代码的优点和不足,你也可以确保将优点保留住并避免错误。我们总是认为自己做的可以比现有系统更好…直到最终我们没能拿出更好的系统,甚至做得比系统的前身更糟,因为我们没有从现有系统的错误中汲取教训。

· 抵御重写一切的诱惑

最好尽可能多地重用现有代码。无论这些代码有多么丑陋,它们毕竟是经过评审和测试过的。扔掉旧代码,特别是那些运行在生产环境中的代码,意味着你扔掉了经过数月(或者数年)测试且久经沙场的代码,或许这些代码中还包含了一些你所不知道的特定的应对方案和Bugfix。如果你没有考虑到这些,你写的新代码最终就会出现出同样诡秘的bugs,而这些Bug在旧代码中都已经被Fixed了。这将浪费大量时间、精力以及多年来积累的知识。

· 多次增量改变优于一次巨大改变

增量改变可以让你更容易地通过诸如测试等反馈来评估对系统的影响。做出一次改变就导致上百个测试失败,这可不是什么好玩的事。这可能让你更加沮丧,压力更大,并会相应地导致错误的决策。三两个测试失败容易对付,并且也容易管理。

· 每次迭代后,确保现有的测试通过

如果现有的测试无法覆盖你所做出的改动,那就增加测试。不要不经思考就扔掉针对旧代码的测试。表面上其中的一些测试似乎不适合你新设计了,不过深入分析这个特殊的测试被添加进来原因是非常值得的。

· 个人喜好和自大不应该成为障碍  

如果东西没有损坏,为什么要去修正它呢? 代码风格或结构不满足你的个人喜好,这不是一个重构的正当理由。认为你会做的比之前的程序员更好同样也不是一个正当理由。

· 新技术不足以成为重构的理由 

因为当前的代码落后于今天所有时髦的新技术,并且相信一门新语言或一个新框架可以使代码更优雅,这些都是最糟糕的重构理由。除非成本效益分析表明一门语言或一个框架将在功能性、可维护性以及生产力方面带来显著的提升,否则最好不要理会它。

· 请记住:人会犯错误 

重构并不总是保证新代码一定就更好,或者与以前的代码一样好。我看过并且亲身参与过许多次失败的重构尝试。漂亮并没有错,犯错的是人。

By Rajith Attapattu

 

2011·同事对我的期望

眼看就要到春节假期了,公司E-HR平台上我的账户下还有一项待处理的工作:填写一份"领导力发展回顾与提升计划"表格。表格很简单,5分钟就能填完,不过其中有一项我自己很难填写:"您了解或感知同事/或下属对您的期望"。虽说可以自我感知,不过我更想听到我的同事真实的声音。 于是乎我就在产品线内发出了一封Mail,希望能够得到大家真实的想法。

小半天,我就收到同事的十几封反馈Mail,多数Mail中大家都提出了对我的期望以及对研发线的期望;另外在很多同事的Mail中还包括了对我个人以及工作的肯定,这让我十分感动,我相信大家的反馈是发自内心的。

将同事们的期望总结一下,大致有以下几点:
1、继续在研发线内引入和推广业内的优秀实践,扩大团队视野,提升团队能力;
2、将已经采用的实践继续扎实的做下去,做深做精;
3、分配工作时尽量兼顾同事们的个人期望;
4、产品线内各项目间平衡投入;
5、给予下属同事更多关于高效工作方法和提高解决问题能力上的指导;
6、提供更多的同事间相互交流的渠道或者平台;
7、多多组织业余团队活动,这是很多同事共同的期望。

两天前曾与我的直接领导面谈了一次,谈了很多,包括新职位要求、部门对我的期望、改善团队关系等等,后来又开始发散,说到个人性格、适宜的职涯发展路线等。其实这两年随着年龄的增大,经验阅历的丰富,我也逐渐开始了认真地自我认知(以前有些随波逐流),渐渐地知道了自己需要什么、想要得到什么、反感什么以及不愿去做什么。做事开始有了倾向性,好恶分明,做喜欢做的事儿,而对那些不喜欢的事情不屑一顾。

我从来都不认为自己是一个外向的人,不过在我喜欢事情上我却是外向的、健谈的甚至是热烈奔放的,说起话来是滔滔不绝的;另外我个人做事比较低调內敛,属于实干型,估计大多技术出身的人都具有同样品质;这几年的历练让我逐渐培养起了大局观,处事冷静沉稳,思路清晰;另外做任何事情都追求高标准,不仅要有好的结果,还要有好的过程。自认为是一个完美主义者,甚至有些偏执;擅于思考,追求高效;强烈的自我驱动;追求简单的人与人之间的关系。

当将近而立之年时,多数人会进入一个人的认知动荡期,他会重新思考自己的人生观、价值观和世界观,思考人生,找出好恶,做出一些改变,做出一些选择,甚至是主动做出一些放弃。也许通过了这个阶段,你的人生之路就会变得更加笔直和清晰。

有了孩子后,我更多的是挤出时间来做自己工作之外想做的事情,辛苦,却有意义,有成就感。不是有那么一句话么:风烛残年时,当你回忆起往事,让你后悔的不是那些你曾做过的事情,而多数是那些你当时没敢于去做的事情。

要敢于去做,并把事情做好!

2011年,我将继续在技术的深度和广度上齐头并进。而在做人方面,多些包容,少些苛刻。

如发现本站页面被黑,比如:挂载广告、挖矿等恶意代码,请朋友们及时联系我。十分感谢! Go语言第一课 Go语言进阶课 Go语言精进之路1 Go语言精进之路2 Go语言第一课 Go语言编程指南
商务合作请联系bigwhite.cn AT aliyun.com

欢迎使用邮件订阅我的博客

输入邮箱订阅本站,只要有新文章发布,就会第一时间发送邮件通知你哦!

这里是 Tony Bai的个人Blog,欢迎访问、订阅和留言! 订阅Feed请点击上面图片

如果您觉得这里的文章对您有帮助,请扫描上方二维码进行捐赠 ,加油后的Tony Bai将会为您呈现更多精彩的文章,谢谢!

如果您希望通过微信捐赠,请用微信客户端扫描下方赞赏码:

如果您希望通过比特币或以太币捐赠,可以扫描下方二维码:

比特币:

以太币:

如果您喜欢通过微信浏览本站内容,可以扫描下方二维码,订阅本站官方微信订阅号“iamtonybai”;点击二维码,可直达本人官方微博主页^_^:
本站Powered by Digital Ocean VPS。
选择Digital Ocean VPS主机,即可获得10美元现金充值,可 免费使用两个月哟! 著名主机提供商Linode 10$优惠码:linode10,在 这里注册即可免费获 得。阿里云推荐码: 1WFZ0V立享9折!


View Tony Bai's profile on LinkedIn
DigitalOcean Referral Badge

文章

评论

  • 正在加载...

分类

标签

归档



View My Stats