标签 读书 下的文章

“中国人史纲”和ThinkPad红点背包

“中国人史纲”和“ThinkPad红点背包”,这两个八杆子也打不到的东西被我搁在一起放到本篇文章的题目中,这都源于近期的网购

上下班一直拎着公司配发的又重又难看的单肩包,早有换掉它的计划。平时忙,虽说有三好街这样的电脑配件集中的"大集市",但也很少去“逛”,记忆中应该有一年多没有去过三好街了;在网购越来越“红火”的今天,我也选择了后者。上周六在“京东商城”看到了一款TARGUS代工的ThinkPad双肩红点包,价格比卓越网便宜很多,而且居然也比淘宝网便宜,遂动了心,价钱也不贵,样子还过得去,遂下了订单。这是我第一次在京东购物,与卓越网比起来,京东的购物流程比较繁琐,网上支付宝支付后居然还需要将订单号提供给京东财务核实。包包从北京送到这里快递费6元,“快递”了5天后,终于于今天到达。包是正品没有问题,看起来也比我预想的要精致许多、小巧许多,分量也不重,对这件包我还是比较满意的。

ThinkPad背包

我的ThinkPad双肩红点包(粗犷型双肩背包30R6345)

我一直认为自己比较“孤陋寡闻”,知道有柏杨这位人文大师,那还是在去年网络上报道的“柏杨逝世”的消息时。年初给今年定下的目标之一就是“读史”。“平民著史”之大家柏杨的作品自然不能放过,在豆瓣的排行榜上“中国人史纲”这套两册书也是名列前茅。在卓越网这套书打了5折的折扣,还有一张介绍柏杨的光盘,觉得还是很合算的,就买下了。昨天这套书就送到了,晚上临睡觉前翻看了几页,第一印象很好,由于尚未深读,这里不敢妄加评价。

中国人史纲

柏杨的“中国人史纲”

随“中国人史纲”一起买下的还有一本《黄帝内经·养生智慧》,北京中医药大学副教授曲黎敏著的,上过“名家论坛”。最近身体欠佳,买这本传统医学养生之书就全当心理安慰了。

读'代码修改艺术',可观其大略

早在几个月前就从网上下载到了"Working Effectively With Legacy Code"这本书的E版,之所以下这本书是因为看到了"Legacy Code"这两个单词了,说实话当时我并不知晓这本书的价值,只是想当然的认为:这本书可能会有助我改善我所从事的项目中的"Legacy Code"。早在上个月去逛书店时,就看到了书架上的这本"修改代码的艺术",遗憾的是没有给予足够关注。在最近看到这本书译者刘未鹏的博客以及Dreamhead关于这本书的评价后,才又从电脑中找到这本书开始翻看。从与这本书几次"擦身而过"的经历来看,自己识书的能力实在是差劲。

我需要这本书,首先是因为我目前的项目中就有大量大量的"Legacy Code",所以我已经开始迫不及待的想看完这本书了。但是翻看一些后,我觉得作为使用C的开发者独观其大略即可。为什么呢?书中代码多以面向对象的语言Java或C++作为例子代码,很多细节对使用结构化语言的开发者意义不大。毕竟结构化的思想与面向对象的思想有着较大的差别。

作者提出来的修改软件的四个起因基本上大家都是应该认同的:
(1) 添加新特性;
(2) 修正bug;
(3) 改善设计;
(4) 优化资源使用。

同时作者又给出了为了减少修改行为带来的风险而应该考虑的三个问题:
(1) 我们要进行哪些修改?
(2) 我们如何得知已经正确地完成了修改?
(3) 我们如何得知没有破坏任何(既有的)东西?

在第一部分第二章的最后作者给出了一个解决这些问题的算法:
以下算法可以用于对遗留代码基进行修改:
(1) 确定改动点;
(2) 找出测试点;
(3) 解依赖;
(4) 编写测试;
(5) 修改、重构。

看完这些我觉得就可以直接进入第二部分了,作者给出了细致的、具体的面对不同情形应该如何去做。建议:在读每一个章节之前先回顾一下自己是否遇到过类似情形,自己当时是如何做的,当时的做法是否有改善的地方,哪些是值得发扬广大的,哪些是应该摒弃的,如果是现在我还会如何去做?之后,再看看Michael Feathers是如何去做的,这样效果应该是很好的。有如下这些情形值得我们去考虑:
(1) I Don’t Have Much Time and I Have to Change It 时间紧迫,但必须修改
(2) It Takes Forever to Make a Change 漫长的修改
(3) How Do I Add a Feature? 添加特性
(4) I Can’t Get This Class into a Test Harness 无法将类放入测试用具中
(5) I Can’t Run This Method in a Test Harness 无法在测试用具中运行方法
(6) I Need to Make a Change. What Methods Should I Test? 修改时应当测试哪些方法
(7) I Need to Make Many Changes in One Area. Do I Have to Break Dependencies for All the Classes Involved? 在同一地进行多处修改,是否应该将相关的所有类都解依赖
(8) I Need to Make a Change, but I Don’t Know What Tests to Write 修改时应该怎样写测试  
(9) Dependencies on Libraries Are Killing Me 棘手的库依赖问题
(10) My Application Is All API Calls 到处都是API调用   
(11) I Don’t Understand the Code Well Enough to Change It 对代码的理解不足
(12) My Application Has No Structure 应用毫无结构可言
(13) My Test Code Is in the Way 测试代码碍手碍脚   
(14) My Project Is Not Object Oriented. How Do I Make Safe Changes? 对非面向对象的项目,如何安全地对它进行修改
(15) This Class Is Too Big and I Don’t Want It to Get Any Bigger 处理大类
(16) I’m Changing the Same Code All Over the Place 需要修改大量相同的代码
(17) I Need to Change a Monster Method and I Can’t Write Tests for It 要修改一个巨型方法,却没法为它编写测试
(18) How Do I Know That I’m Not Breaking Anything? 降低修改的风险
(19) We Feel Overwhelmed. It Isn’t Going to Get Any Better 当你感到绝望时

当你看到这些具体情形的列表,眼前是否浮现出是曾相识的经历呢?"代码修改艺术"应该说是一本实用主义的书,如果你是使用面向对象语言的程序员,那你很幸运,建议你将一本"修改代码的艺术"放在你的办工桌旁,随时翻看、思考和领悟;如果你和我一样是结构化语言的使用者,也没有关系,观其大略,品其思想,细读你兴致之所在。

以上的书中文字的中文翻译部分摘自于刘未鹏的中文译文。

如发现本站页面被黑,比如:挂载广告、挖矿等恶意代码,请朋友们及时联系我。十分感谢! Go语言第一课 Go语言精进之路1 Go语言精进之路2 商务合作请联系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