Fox's profileFox涂鸦PhotosBlogListsMore Tools Help

Fox涂鸦

November 13

Code Review

本文同步自游戏人生


时常听到有同事在抱怨项目中的代码有多么乱。对于现有的很多复杂的模块,几乎没有人愿意去修改,如果你想确切的知道哪些代码是已经废弃的,哪些代码又是在使用中是一件很难完成的事情。

Andrew Hunt和David Thomas在《程序员修炼之道》中提醒我们:不要容忍破窗户(Don't Live with Broken Windows)

终于,在一次讨论之后,我们决定开始做code review(是的,以前没有)。两周之后,我发现在提交的重读报告中,几乎千篇一律的空白,意思是没有问题。难道平时抱怨的那些代码都开疾风步跑了?

显然是没有用心,随便翻一翻,最后你好我好,都没有问题了。

我只好站出来抓重读的质量,制定了格式规范的重读报告文档,要求从代码规范、设计审查到最后给出修改意见都要做到。如果确实感到别人代码写的漂亮,没有问题,那就一定是别人比你做的好,重读文档中要体现出来对自己的反思。总之,文档是强制的,不能马虎。

用心读别人的代码一定是大有收获的,每次做交流,单靠一个人坐在那儿讲一个模块的功能,你无法确切的知道他到底是怎么想的。因为拿到一个功能需求,大家的设计思路基本都一样:

o 策划给的案子有哪些东西要写在配置里,有哪些东西要放在现有的类里,有哪些东西要新加类和接口;

o 什么时候读取配置,定义一个配置的静态结构,添加配置读取的接口;

o 要用到哪些消息,怎么处理这些消息;

o 消息处理的接口里面做哪些判断,错误和正确如何处理......


每次听同事讲解功能,心里暗想,和我想的差不多......,需求、数据和逻辑策划都给了,大家的思路肯定差不多。

但真正读代码的时候,原来有这么多的不同:

o 别人写配置的结构体和你不一样吧?

o 别人使用STL的习惯和你不一样吧?

o 别人消息处理的时候验证条件使用的局部变量习惯和你不一样吧?

o 别人写for和switch的习惯和你不一样吧?

o 原来代码还可以这样写,为什么不是那样写呢?

我做重读代码的时候,对比发现了很多别人比我用的好的地方,不是我用的有问题,而是换一个方式之后,别人用的更简单,更好理解了。

估计没有人不讨厌过于形式化的东西,但每个人心中所谓的形式化是有度的,同样的一个东西,不同的人来做,有可能你就是应付成形式化的东西,而他从中体会到了很多。本来可以提升团队能力和效率的一个东西,到头来变的形式化,我很失望。

我以前认为,把自己的代码写好了就够了,别人代码写成什么样子,我也管不了。

后来需要经常用别人的模块,一个接口一个接口的跟进去,跟到最后发现自己快晕了,好不容易走出来,忘了自己该干什么了。

这时候,就想如果有个文档该多好。

后来要求大家写一些文档,可是每个人写文档的风格和自己完全不一样,一点不比直接读代码快,然后就做了一个格式规范的设计文档,这样每个模块功能不同,但文档的描述顺序统一了,想看哪一部分,了如指掌。

可能有人觉得奇怪,在开源项目里,没有人参与管理,大家做的很好,放在一个现实中的团队里,反而做不好。

开源项目没有人管理,是因为他们很容易做到自我管理,所有的规范是约定俗成的。你自愿加入一个项目,就意味着你认同并服从这个项目的开发模式和细节实现,这是游戏规则。

而进入一个公司,并不总是因为这个项目吸引了你,当然我们希望这个项目可以吸引你。

统一规范不是为了约束,而是为了效率,没有人希望每天在几个系统、几个工具之间换来换去。不是因为它们差,而是因为他们太多不同。

我们很在意自己的代码别人怎么去评判,显然不是你好我好大家好,这一点大家心里都明白,看看别人在重读文档里是怎么评价的吧。

如果放在其他环境里,你写的代码什么样,花钱谁给你看呢?


请移步至此阅读全文»
November 11

谷歌的悲剧

本文同步自游戏人生


抱歉,我的确不想做标题党,但谷歌这次真的灰常灰常的悲剧。

谷歌音乐终于可以在服务器保存列表了,听歌不用每次添加,也不用下载到本地了。这是一个喜剧,对吧?

然而……

谷歌音乐登录界面



注意哦,没有Google ID,那是Windows Live ID哦!

悲剧啊!

让我想起一句话,这里稍加篡改:谷歌就像一个被闲置的漱口盅,初来中国时是一部洗具,活到现在,生生的被做成一部杯具!


请移步至此阅读全文»
November 07

折腾Ubuntu(毕业)

本文同步自游戏人生


折腾Ubuntu折腾的我不亦乐乎,之所以用毕业这个词,是因为基本功能折腾的差不多了,我可以像Windows下去使用。接下来我需要把精力更多的投入到开发上了。

汇报几点:

o 浏览器:使用Firefox(3.5.4)。亮点:Space向下翻页,Shift-Space向上翻页,Ctrl-0、Ctrl--、Ctrl-+进行缩放,这些功能可能大家都有,但在Ubuntu下,轻易不动鼠标的习惯让人更自觉的去敲键盘。Firefox的配置管理等丰富的功能也让我很快就习惯了它;

o 阅读器:Evince(Document Viewer 2.28.1)。亮点:Space & Shift-Space在这里一样有效;每次打开文档,停留在你上次阅读的位置。当然,一般的阅读器提供书签,但使用书签毕竟多了取放书签的操作,谁不是在看过之后,直接一个关闭呢?

o 在Windows下,不管是开发还是其他应用,我应该算是使用快捷键比较多的了。来到Ubuntu,我依然时常有原来这个功能也有快捷键这样的感慨;

o 再次感慨Make、Emacs、Gdb、SVN的博大精深,同时也说明我对他们的使用还没有到驾轻就熟的地步。

我不确定我现在做的事情会在什么时候能够确切的体现到工作中,所以在工作例会上我强调这是我的个人兴趣。但因为个人兴趣导致了工作内容的滞后(虽然并不是开发任务,只是组织学习讨论),但在意识到这种情况之后,我也提出希望利用周末时间好好整理一下;

o iBus输入法没有软键盘,输入特殊字符比较麻烦,需要使用其Chinese-PinYin输入法以ifu为前缀。


本周早些时候,FH问我要不要Google Wave,我兴奋的直呼:我要!不过GW的邀请通过真是慢,直到周五才拿到,大概等了三天。刚开始使用,可以交流的人并不多,在我看来,其最大的特点是对Google产品(尤其是搜索产品)的优势整合。我不希望抱着玩的心态去体验,只是希望可以随着GW的普及,为工作、学习和生活带来更多的便利。

有人在洗刷GW的难以理解:我们看到,大多数人认为GW比自平衡二叉查找树、C14年代测定、死神、新古典主义经济学、组合博弈论、男人、人自身的存在、Google Fast Flip等要难懂。

当然,GW不是这个世界上最难理解的。因为,还有Obama获得诺贝尔和平奖、美国免税代码、多级静电加速器、中国的电报码、女人、Microsoft Visio 2004等让人费解。

通过Google搜索,如果输入中含有什么,页面竟然会被重置,这是为什么


请移步至此阅读全文»
November 03

升级到Ubuntu 9.10

本文同步自游戏人生


对于使用Ubuntu刚1周的我来说,从9.04升级到9.10,最明显的差异只是集中在视觉感受上,确实好很多,画面更加丰富。不幸的是,同样是ext3,9.10启动明显比9.04慢,准备转换成ext4再试试。据说10.04 10秒启动,不知能否实现。

Ubuntu 9.10明显是支持ibus替代scim作为中文输入,之前安排的scim输入法已经被删除。而使用ibus的五笔输入倒也没有感觉比scim差。只是看到ibus的引擎是用python写的,至于具体的比较,我暂时没有这样的需求:)。

emacs的版本升级到了23.1.50.1,因为我之前就已经在使用23.0.91.1,所以也没有感觉到特别的不同。

使用过程中,这次更新似乎对wine产生了一定的影响,跑War3的时候,全屏显示和声音会出问题,大家也是各说一词,问题不尽相同。我是通过Wine Configure对Audio和Graphics随便改了一下就过了。反正只是玩游戏的时候用一下,也懒得深究。

遇到的其他问题大都不是升级造成的,而是语言选择带来的。因为之前只是在安装时选择了英文,后面发现系统里像日期显示、一些提示信息和一些菜单名称 等还是汉字,开始也没理。这次升级之后,看了一下Language Support,才发现没有装英文包,而中文的我又没装全,导致了这样的问题。于是装了英文包,所有显示都正常了。结果后面发现Emacs、GEdit的 中文都无法正常显示,连War3也无法启动了。后面在/etc/environment里面加上LC_CTYPE="zh_CN.UTF-8"才正常,于 是我的locale就成了这样:
LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE=zh_CN.UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

总之,如果你希望为自己构建一个英文的系统环境,但又要使用中文输入和一切带有其他语言文字的文档、程序,这就和在Ubuntu下用Wine一样,都有一点想脱俗没脱掉的感觉,还是比较恶心的。


最近甲流比较肆虐,官方的说法是:目前中国所流行的流感病毒中,近80%是甲型H1N1流感病毒,随着天气转冷,疫情上升趋势将会进一步呈现。

大家注意身体!


请移步至此阅读全文»
November 02

拔牙前后小记

本文同步自游戏人生


这段时间换季换的我有点不适应,先是扁桃体炎,后来慢性咽炎,又是口腔溃疡,又是牙疼。其他都好办,吃点消炎药多半就扛过去了,牙疼就没法扛了,左腮被尽头牙磨的说话都费劲,更别说吃饭了。

周六出去给一个单位帮忙,中午吃饭的时候,满桌的菜到我跟前,我只能喝汤。当时我就暗下决心,这次一定要把这牙解决了。

老婆在准备公务员考试,这次考试对她来说很重要。我只希望她安心复习,结果她听说之后还是从学校赶回来,非要陪我第二天把牙拔了。

我离华西口腔又比较近。担心人多,挂号难,特地打电话确认了一下,医院早上7:30开始挂号。为了能够节省时间,我们早上7点多就到了医院,已经有 一二十个人有排队了。因为有心理准备,所以也没觉得等了很久。事先已经想好了,最里面磨到左腮的尽头牙直接拔了,右面靠后的一颗龋齿修复一下。于是一次挂 了两个号(一个是No.1,一个是No.2)。我想可能是因为周日没有专家号,大家一般都选择周一到周六来吧。对于我这样没有太大难度的病患,感觉周日来 正合适。当然这主要还是要感谢老婆的督促,否则按照我的个性,能挨就挨过去了,即使会去医院,我也不愿意起这么早。

因为大夫是8:30开始上班,挂完号之后就先到八楼颌面外科门诊外面大厅坐着看书(准备的还是比较充分)。

8:30的时候,医生护士们已经准备好了,本想这么多人,应该会喊号通知,看见有病人自己进到门诊,我想我也过去看看得了。透过一个门诊室里的电脑 显示屏,我看到了我和医生的名字,于是敲了一下门就进去了。医生是一个非常年青的小伙子(后来才知道是他是研究生,而挂号单上的医师是他的导师),大概了 解了我的情况之后,让我先去拍牙片。牙片拿回来他看了一下,觉得我目前有炎症,不宜拔牙,要待炎症消失后才能拔。这时他的导师过来,让我躺在椅子上,看了 一下,告诉我(以及他的一群学生)我之所以感觉到左腮下面尽头牙的地方疼,是因为上面的尽头牙会咬到下面腮处,那儿已经是有个溃疡。虽然下面的现在不能 拔,但上面的最好先拔了,这样炎症才能从根本上消失。

这位老师分析的非常正确啊,我压根就没告诉他什么情况,结果他不仅观察的细致,而且分析的有理。既然这样,我肯定同意把上面的先拔了。小伙子让我再下去拍个牙片,老师又过来说,情况比较清楚,不用拍了,如果一会拔的时候有意外,再去拍就是了。

不愧是老师啊!

不过,由这个小伙子来为我拔牙我并没有什么顾虑:一来老师还在这里呢,二来小伙子只是经验少了些,在我的配合和这样的老师的指导下会很快成长起来。

拔牙的过程还算顺利,先打了麻药(味道不怎么好,流到喉咙的时候让你不吐出来都不行)。不知道小伙子是不是第一次拔牙,因为旁边站着三位他的师兄 弟,在他使用拔牙铤的过程中,他的几位师兄一直在一边指导他,因为铤了一两分钟,牙不见松动,估计也是我的牙比较坚固,一位师兄只好亲自上阵,显然经验要 丰富的多,很快牙齿就松动了,拔下来一看,这牙根是弯的,而且是三根的(我不太懂,简单说就是三条腿)。也没有流太多血,因为麻药没有消失,也感觉不到疼 痛,倒是嘴角被扯磨的有些出血。

这时大概11:00,医生嘱咐了我一些内容,看时间还够,我们就到三楼的牙体牙髓病科准备把齲齿补一下。

三楼大厅里等着的人比较多。从护士手里的病历也看的出来,还有很多病人没排到。护士一看我是二号,就安排一个刚做完的小伙子(又见小伙子,因为这个 号上明确的写着:教学)给我补。小伙子也让我先去拍了一个牙片,拍回来后,一位女士刚要补完,轮到我了。结果我后面一位大爷径直躺在椅子上,我也想的开, 反正这补牙也快,我就多等一会儿吧。

过了10多分钟,大爷就补完了。补牙确实是比拔牙要省事,不用打麻药,直接用小钻子把坏掉的牙质钻去,钻出一个洞来,用树脂填充上就行了。最难熬的 是钻到坏掉的牙质的地方,一阵一阵的酸痛。结果小伙子说我其他牙也需要补一下,我心想,补就补吧,都补好了也就了了心事了。结果下来一共补了三个洞。

补牙不比拔牙省钱,补三个洞材料加手术费一共400+,拔牙300+。不过听说拔上面的牙要容易,拔下面的就难了,而下面的尽头牙又最难拔,花的时间也要久的多,说一二个小时也是可能的,说的比较恐怖,我都不想拔下面的了。

弄完了12点过一些,两个人都饿慌了。找了个地方吃饭,为选个吃饭的地,俩人意见还不一致,老婆紧张自己的复习,我也为此觉得愧疚。后来想明白了, 要想让老婆安心复习,我只有快点把身体搞好,而不能一味要求她不要管我,更不应该怪她浪费时间在我身上。换成我我也不可能不担心。

老婆回学校了,我就回家吃了消炎药上床睡觉。睡到6点多,老婆打电话催我起来,起来之后感觉自己有些发烧。出去买了几盒八宝粥,顺便买了个体温计。

因为这几天没怎么吃东西,这会实在是饿,又不知道能吃什么,打电话叫肯德基外卖。

回家测了一下体温:38,算是中烧了。因为现在甲流比较猖獗,我又属于免疫力比较低的个体。打电话问了一下拔牙的老师,他说拔牙后发烧会有,但比较 少,5%吧。他嘱咐我也不用太紧张,可以吃点退烧药,好好休息。我又打电话问我学医的一位同学,她也基本是相同观点。我一翻,手上药还真不少,退烧、消炎 的药也有,吃完后就上床睡觉。

待同住的同事回来后,我告诉他们我发烧了,明天不去上班了,让他们也注意一点。

躺下之后,辗转反侧,难以入睡。不知是下午睡的多了,还是麻药效果消失了,抑或是发烧问题,就是感觉很难受。一会把自己捂的很紧,一会又把被子甩到 一边,就没有个舒服的时候。迷迷糊糊感觉过了很久,一看才12点,又测了一下体温,39了。一摸,头上都是汗,被子却是冷的……

后来,不知怎么就睡着了,再醒来已经是8点过了,晃了晃头,感觉没什么不适。一测体温:37,似乎是恢复正常了,起床上班。

一天下来,再没有什么特别的不适,就是感觉到饿。

晚上回来再测体温:36.7,完全正常,看来发烧应该是发炎引起的,幸好不是感冒,否则我还真担心老婆和其他同事……


Ubuntu 9.10发布了,笔记本和台式机都更新一下。家里的笔记本虽然处理能力差了一些,但网速可以达到300K,而公司的电脑虽然4核,但网速只有40K。无法兼得啊:(。

再次告诫自己:身体是革命的本钱。

喜剧的是:我似乎每次都是把本钱都输光的时候才能想到这一点……

悲剧的是:我经常可以有机会想到这一点……


请移步至此阅读全文»
 

Fox Xiang

No list items have been added yet.
There are no categories in use.
感谢访问!
Please wait...
Sorry, the comment you entered is too long. Please shorten it.
You didn't enter anything. Please try again.
Sorry, we can't add your comment right now. Please try again later.
To add a comment, you need permission from your parent. Ask for permission
Your parent has turned off comments.
Sorry, we can't delete your comment right now. Please try again later.
You've exceeded the maximum number of comments that can be left in one day. Please try again in 24 hours.
Your account has had the ability to leave comments disabled because our systems indicate that you may be spamming other users. If you believe that your account has been disabled in error please contact Windows Live support.
Complete the security check below to finish leaving your comment.
The characters you type in the security check must match the characters in the picture or audio.