徐艺波个人网站 | Make everything as simple as possible, but not simpler. Albert Einstein | ||
| 有什么好的建议,可以贴一下。 | |||
| 你的支持,让我们做的更好。 | |||
现在写软件是很容易的一件事情,要实现一个功能,google一搜,再加上sourceforge、codeproject,一堆开源代码这么一糊,换个logo就可以拿去充军了。很少人再从代码这个角度上去控制软件的质量,比如有些人主要抓软件测试这块,只要东西符合规格就pass;有些人从iso XXX上去控制,用月球人语言来和地球人对话;有些人主要抓伙食,只要coder们都吃饱喝足了,写的东西肯定没问题(不知道是否真有这等事)。
写这篇文章也是我工作两年中,看到很多人和事挣扎在混乱的代码中,在即将倒塌的地基上建筑金字塔。这世界诱惑太多了,很多人只想会做,而不是想做好。一上QQ,肯定会逼着你怎样达到怎样怎样的效果,你跟他说你应该这样那样,心里想着授人以渔,对方就是不领情,似乎完成了这个功能,以后就回家种地,一辈子不用再写程序一样。代码,一天一天堆砌,如同一个被废弃垃圾厂一样,每天都往里头扔UDP包。这让我想起了一老人说Unix的现状,所经过这么多年的进化,Unix内核已经被修改的一团糟。我想这对一个人、一个公司也是这样,如果不经常到去整理一下代码,让代码放任自由的生长,不是一件符合自然规律的事情。
任何方法都有适合的人群,如果你不喜欢自己手把手的敲代码、调试代码,看着自己脑子中的思想被证实的那种愉悦,我想下面的建议并不能适合你。
这是第二次修订这篇文章,第一篇写的语句太富有个人感情色彩,以后应该学习林肯的方法:情绪不对时写的信,隔天再投寄。自己(徐艺波)也会不断的如同升级更新软件一样,更新这篇文章。
写软件,每天都泡到代码中,没有人比你跟了解代码。但如果在写代码前,不去认真的写、去设计,往往到项目后期,整个局面难以控制。聪明的C/C++程序员永远不会忘记编译器是在生成汇编代码,当他们需要超越语言本身的能力时,他们仍然能够到达指定的区域并控制所产生的代码。(摘录自网上)
看过Windows源码的家伙,一定对David Cutler的代码羡慕不已,优雅的风格、清晰的流程、严格的规范。如果没有经年累月的写代码的积累总结,是很难达到这样的高度的。
我自己从大二开始到现在写了差不多有49万行的代码,有C、asp、php、javascript、asm等等,无论他们是什么语言,我总是尽量的多写注释,自己也在不断的完善注释的规范和辅助开发工具(比如:txt2chm、msdn精简版、extractor、ed 编辑器、build、replaceX…),随着技术的不断深入,自己也在不断的完善各种工具,这些工具也在更好的为自己服务。当这些形成一个正态循环的时候,能会发现这世界很和谐,也不用整天跟在微软的屁股后面。
你是否曾经这样: 完成代码,测试通过后,以后几乎就不再看了。 当你发现了更好的方法(算法),是否会再去修改早期写的蹩脚的实现。 从来不写注释,即使写了,也是敷衍了事。
流水线成就了福特轿车,在软件上,自动构建是流水线的另一个外号。自动构建最重要的一种高度凝和的东西,将项目组内各个人的工作贯穿起来,尽可能地由工具来控制琐碎的细节。自动构建作为一个高于单一项目的东西,还能够磨合产品,暴露产品的不足。
模块化和层次化的目标是增加人的控制力。也是现在非常成功一种管理方式。我想,这也是微软虽然现在有成千上万的软件设计师,但一直采用的五六个人的小团队的作战方式。
当事情简单的时候,你可以想怎样就怎样,模块化和层次化并不能显示出它的威力。当事情越来越复杂,你发现大量的代码对砌起来,接口不统一、命名不统一、文件组织一团糟…此时如果时你,你应该怎么做呢?
我想,当某个系统达到混乱的极限的时候,你需要做的,不是裤子都来不及脱就只身蹦进去,投身到水深火热的改革之中(往往你使得事情更糟糕)。站在旁观者的角度,分析这个系统的上层和下层哪个地方出问题了,研究这个系统本身的模块化、层次化。
每个人都有每个人都做事习惯,在一个团队中,需要的是一种共同的习惯去做事。否则,很多时间都浪费在沟通上。
尽量不要做杀鸡用牛刀的事情,也不要做杀牛用指甲刀的事情。现在存在的每种工具、语言都有其需要,在做事情前,仔细去分析调查一下,系统的考虑一下各种因素:移植性、健壮性、性能、升级、性能等。 这世界变数很多,各种不同的工具在不同的环境,不同的组合,都能带来不同的实际效果。有时候,你真的不得不感叹,这世界没有一个确定的放之四海而皆准的答案,大部分你遇到的情形是这个世界的第一次出现。如果不对各种工具有个深谙于心的把握,很难做成一个完美的答案。
无论你喜欢与否,这世界一直在转动,一直有新的东西诞生,好的、坏的,许多都需要你去做出抉择,而且你的选择对以后会有很大的影响。
大家都知道很重要,但说比做难的多。而且往往是牙痛了之后,才提醒自己每天晚上应该刷牙。
你是否曾经这样: 只工作不生活(摘自rhett blog) 一天一顿饭,一顿吃3顿