别让你的代码疯掉

来源:互联网 发布:软件大全下载 编辑:程序博客网 时间:2024/04/29 21:15
  1. 为什么写这篇文章

    现在写软件是很容易的一件事情,要实现一个功能,google一搜,再加上sourceforge、codeproject,一堆开源代码这么一糊,换个logo就可以拿去充军了。很少人再从代码这个角度上去控制软件的质量,比如有些人主要抓软件测试这块,只要东西符合规格就pass;有些人从iso XXX上去控制,用月球人语言来和地球人对话;有些人主要抓伙食,只要coder们都吃饱喝足了,写的东西肯定没问题(不知道是否真有这等事)。

    写这篇文章也是我工作两年中,看到很多人和事挣扎在混乱的代码中,在即将倒塌的地基上建筑金字塔。这世界诱惑太多了,很多人只想会做,而不是想做好。一上QQ,肯定会逼着你怎样达到怎样怎样的效果,你跟他说你应该这样那样,心里想着授人以渔,对方就是不领情,似乎完成了这个功能,以后就回家种地,一辈子不用再写程序一样。代码,一天一天堆砌,如同一个被废弃垃圾厂一样,每天都往里头扔UDP包。这让我想起了一老人说Unix的现状,所经过这么多年的进化,Unix内核已经被修改的一团糟。我想这对一个人、一个公司也是这样,如果不经常到去整理一下代码,让代码放任自由的生长,不是一件符合自然规律的事情。

    任何方法都有适合的人群,如果你不喜欢自己手把手的敲代码、调试代码,看着自己脑子中的思想被证实的那种愉悦,我想下面的建议并不能适合你。

    这是第二次修订这篇文章,第一篇写的语句太富有个人感情色彩,以后应该学习林肯的方法:情绪不对时写的信,隔天再投寄。自己(徐艺波)也会不断的如同升级更新软件一样,更新这篇文章。

  2. 认真写代码

    写软件,每天都泡到代码中,没有人比你跟了解代码。但如果在写代码前,不去认真的写、去设计,往往到项目后期,整个局面难以控制。聪明的C/C++程序员永远不会忘记编译器是在生成汇编代码,当他们需要超越语言本身的能力时,他们仍然能够到达指定的区域并控制所产生的代码。(摘录自网上)

    看过Windows源码的家伙,一定对David Cutler的代码羡慕不已,优雅的风格、清晰的流程、严格的规范。如果没有经年累月的写代码的积累总结,是很难达到这样的高度的。

    我自己从大二开始到现在写了差不多有49万行的代码,有C、asp、php、javascript、asm等等,无论他们是什么语言,我总是尽量的多写注释,自己也在不断的完善注释的规范和辅助开发工具(比如:txt2chm、msdn精简版、extractor、ed 编辑器、build、replaceX...),随着技术的不断深入,自己也在不断的完善各种工具,这些工具也在更好的为自己服务。当这些形成一个正态循环的时候,能会发现这世界很和谐,也不用整天跟在微软的屁股后面。

    你是否曾经这样:完成代码,测试通过后,以后几乎就不再看了。当你发现了更好的方法(算法),是否会再去修改早期写的蹩脚的实现。从来不写注释,即使写了,也是敷衍了事。
  3. 流水线

    流水线成就了福特轿车,在软件上,自动构建是流水线的另一个外号。自动构建最重要的一种高度凝和的东西,将项目组内各个人的工作贯穿起来,尽可能地由工具来控制琐碎的细节。自动构建作为一个高于单一项目的东西,还能够磨合产品,暴露产品的不足。

  4. 模块化、层次化

    模块化和层次化的目标是增加人的控制力。也是现在非常成功一种管理方式。我想,这也是微软虽然现在有成千上万的软件设计师,但一直采用的五六个人的小团队的作战方式。

    当事情简单的时候,你可以想怎样就怎样,模块化和层次化并不能显示出它的威力。当事情越来越复杂,你发现大量的代码对砌起来,接口不统一、命名不统一、文件组织一团糟...此时如果时你,你应该怎么做呢?

    我想,当某个系统达到混乱的极限的时候,你需要做的,不是裤子都来不及脱就只身蹦进去,投身到水深火热的改革之中(往往你使得事情更糟糕)。站在旁观者的角度,分析这个系统的上层和下层哪个地方出问题了,研究这个系统本身的模块化、层次化。

  5. 规范

    每个人都有每个人都做事习惯,在一个团队中,需要的是一种共同的习惯去做事。否则,很多时间都浪费在沟通上。

  6. 用合适的工具做合适的事情

    尽量不要做杀鸡用牛刀的事情,也不要做杀牛用指甲刀的事情。现在存在的每种工具、语言都有其需要,在做事情前,仔细去分析调查一下,系统的考虑一下各种因素:移植性、健壮性、性能、升级、性能等。 这世界变数很多,各种不同的工具在不同的环境,不同的组合,都能带来不同的实际效果。有时候,你真的不得不感叹,这世界没有一个确定的放之四海而皆准的答案,大部分你遇到的情形是这个世界的第一次出现。如果不对各种工具有个深谙于心的把握,很难做成一个完美的答案。

  7. 不断的学习

    无论你喜欢与否,这世界一直在转动,一直有新的东西诞生,好的、坏的,许多都需要你去做出抉择,而且你的选择对以后会有很大的影响。

  8. 健康

    大家都知道很重要,但说比做难的多。而且往往是牙痛了之后,才提醒自己每天晚上应该刷牙。

    你是否曾经这样:只工作不生活(摘自rhett blog)一天一顿饭,一顿吃3顿
  9. 本文转自: 徐艺波 http://www.xuyibo.org/article/44.htm 
原创粉丝点击