别让你的代码疯掉

    Author: 徐艺波  From: xuyibo.org  Updated: 2020-12-27

      建议  有什么好的建议,可以贴一下。
      捐助  你的支持,让我们做的更好。

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

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

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

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

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

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

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

    你是否曾经这样:
    完成代码,测试通过后,以后几乎就不再看了。
    当你发现了更好的方法(算法),是否会再去修改早期写的蹩脚的实现。
    从来不写注释,即使写了,也是敷衍了事。
  5. 流水线
  6. 流水线成就了福特轿车,在软件上,自动构建是流水线的另一个外号。自动构建最重要的一种高度凝和的东西,将项目组内各个人的工作贯穿起来,尽可能地由工具来控制琐碎的细节。自动构建作为一个高于单一项目的东西,还能够磨合产品,暴露产品的不足。

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

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

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

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

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

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

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

    你是否曾经这样:
    只工作不生活(摘自rhett blog)
    一天一顿饭,一顿吃3顿
    

  17. 建议:
    User:
Built on: 2021-5-13 3:04:36
Copyright © 2006-2008 xuyibo.org All rights reserved.