从 Eclipse 的一个缺陷谈隔离的重要性

关于隔离的重要性

在使用 Eclipse 中你经常会遇到的一个尴尬是, 你打开一个 Maven 项目, 因为要加载依赖, 再加上特殊国情造成的网络访问缓慢, 那好吧, 那就等吧, 然后在等待的过程中, 你很可能会暂时转到其它已经打开好的项目. 这很正常, 不是吗? 何必干等呢?

然而, 当你编辑了另外一个项目的某个文件, 正准备保存时, Eclipse 却给你弹一个框, 阻止了你的保存!

image

请看上面的第三条"Waiting User Operation", 那就是我的保存动作, 然而它却被前面的 Maven 项目的构建动作给阻拦了!

碰到这这种情况你是否会觉得特别沮丧呢? 毕竟这两项目间毫无关系呀!

如果我编辑的是同一个项目的文件, 被阻拦还能说得过去, 可为啥不同的项目也被阻拦了呢?

所以我认为这是一个缺陷, 项目之间应该做到隔离, 彼此不应该影响, 这在我们的开发活动中同样是极为重要的一个原则!

在这里, 一个项目的保存动作对另一个项目的构建动作形成了错误的依赖, 不管开发者有什么理由, 从用户角度看, 这种依赖是不应该的, 是他所不能预期的.

开发者应该尽力减少这种违反直觉的依赖, 如果不能做到这一点, 将会带来非常糟糕的用户体验!

就好比你再浏览器里打开了多个标签页, 然后有一个标签页失去了响应, 然后你发现所有的标签页都卡住了!

又或者你打开了很多的程序, 然后一个程序失去了响应, 然后整个电脑都死机了!

复杂性管理与重复性管理

探讨了简单重复性所带来的复杂性.

在前面我们说到了所谓的"计算机科学", 重点在于如何控制大型系统的复杂性.

复杂性本身当然也是个很大的话题, 而一种常见的复杂性的来源则是重复性, 即是由不断的重复所带来的复杂性.

重复性带来的复杂性常被人忽视, 大概是因为一开始它是不起眼的, 而当人们意识到它的存在时可能已经陷入了泥潭.

继续阅读

外派程序员雨夜里写给北方爱人的信

最近又读了不少唐诗,又忍不住要吟诗,再次膜拜一下唐朝那些才华横溢的诗人……

唐朝程序员李商隐被公司从总部长安出差到了南方的四川(巴山)地区,有一天,他收到了北方爱人的来信,以下是他的回信:

夜雨中写给北方的爱人你来信问我什么时候回去, 然而我也没个准。项目需求反复变更,bug 层出不穷!
                                                                     如今我只能孤独一人在这巴山的夜里,望穿秋水,看着窗外绵绵秋雨把池塘涨满……

我遥想着未来有一天能够回到你的身边,与你依偎在西窗下一起剪那些烛花;
到那时,我会再次向你说起今天巴山的这个秋雨之夜,以及我对你的深深思念!

以上为供人读的源代码,附上编译后给机器读的二进制文件:

夜雨寄北 李商隐 【唐代】 君问归期未有期,巴山夜雨涨秋池。 何当共剪西窗烛,却话巴山夜雨时。
考虑项目的潜在国际化伪需求,附上鸡肋的 i18n 版本:(来自 [cn.hujiang](http://cn.hujiang.com/new/p478235/),有些许改动)
Note on a Rainy Night to my Lover in the North
You ask when I’m coming back home, but I really don’t know the exact date yet.
The endless rain filled the pools on this autumn night.
When we shall be able to trim wicks again, together in your western window,
I would talk to you about this moment of night rain in Sichuan.

Eisenhower Decision Matrix

时间管理的决策矩阵,分为两个维度:重要性与紧急性。

Eisenhower Decision Matrix

  1. 优先处理第一象限的事情:重要的紧急的
  2. 其次处理第二象限的事情:重要的但不紧急的;
  3. 再次处理第三象限的事情:不重要的但紧急的
  4. 最后处理第四象限的事情:不重要且不紧急的。