IT技术博客大学习 共学习 共进步

给你的代码《约法四章》:基本功能、错误处理、智能纠错、日志收集

IM鑫爷 2012-03-12 23:45:44 浏览 4,342 次

    作为21世纪的码农,如果只是想混混工资的话,这篇文章可能不太适合你,但如果想在技术上有所提升,本文也许能帮你照亮前进的道路。程序员不能只是天天埋头写代码,还得关心代码的质量,其实写代码很容易,稍微用心点学都能写,但是要产出好的代码却不是那么容易事,所谓好的代码不是说你完成了某某功能就牛B,在完成了基本功能的同时还有很细节要注意,在各种关于代码质量的书中都的提及到了这样的概念:代码格式、命名规则、功能注释等,虽然这些东西看上去并不能主宰软件的“生与死”,但是谁又能保证一个软件从出生到结束都由一个人维护呢?关于代码规范这个话题我不打算列入本文的内容,原因有二,其一是很多书中都的提及到,我就不必重申;其二是很多程序员其实也很注重这个问题,只是注释多少的问题。那么就标题中的四点来给我们的代码约法四章,让我们这些码农的代码更健壮。

    首先是基本功能,这个我不多说大家也应该懂了,程序员就是要完成各种产品提出的需求,如果基本功能都完不成,我们后面一切都是空谈。就好比是建房子,连地基都还没有开始搞,就在想我要买什么家具能让房间更漂亮。鸟虽然能飞,但它也是先学会走才学飞的。所以这一点大多数的程序员都能做到,我也就此罢休,也许这一段是多余的,呵呵。

    其次是错误处理,错误处理这个东西如果从程序员的角度去看好像不觉得他有多神秘,只要稍加注意,些事就能避免,但试问有多少人真的注意了?这里举个大家经常看到的例子,字符串拷贝函数strcpy:

    [c]

    char *strcpy(char *dst, const char *src)

    {

     char *addr = dst;

    assert((dst != NULL) && (src != NULL));

    while((*dst++ = *src++) != ‘\0′);

    return addr;

    }

     [/c]

    就是这么如此简单的代码, 有多少人会加上断言进行NULL判断?据说这段代码考到了无数牛人,因为在考这段代码的时候不是在考你会不会字符串拷贝,而是在考你是否考虑了错误处理。很多代码都是因为没有错误处理或者处理不当导致程序崩溃,想想其实挺不划算的,花了大把时间把主要功能都实现了,结果因为没有考虑这些看似不起眼的错误导致程序不能稳定运行,对于客户来说你这就是没有完成工作,而对于同行来说,你这就不是合格的码农。其实大家在编写代码时候多考虑一点,程序就更健壮一点。记得在网上有很多文章有这么一说:不要相信任何用户的输入,想想还是非常有道理。

    然后是智能纠错,对于大多数web开发人员来说,列表翻页是相当常见的功能,但就是这么一个看似简单而又常见的功能,却隐藏了该文很重视的一个智能纠错的问题。假设page参数为列表的页码,如果page小于等于1,你的代码是否能正确的读取第一页的数据?如果page大于最大页数,你的代码是否还在查询数据库列表?当你看到这里,你不防试试打开你的代码,看你是否真的把这些都做完善了?其实这里只是引用了一个简单的实例来说明智能纠错的重要性,在程序中还有很多地方需要类似的纠错,如果你发现了,请完善他。

    最后是日志收集,其实能做到上面两点,我挺羡慕你的,因为到目前,我也算不上合格的码农,代码经常出BUG,虽然说BUG对于程序员来说很常见,但是一有BUG心里总归不爽,不爽又能怎么着?还得找问题继续改之。如果能很快定位问题的根源,那么你是幸运的,能很快解决他。但是如果某一天,你的客户告诉你程序中断了,而你也不知道程序错在哪里,那么你就杯具了,慢慢找吧。真的需要要一步一步来找吗?太浪费时间了,不防在你在程序中添加日志收集,在你觉得可能出现错误地方都做上日志标记,在以后程序崩溃后,至少能通过日志定位程序中断时大概的运行位置,你又一次成了幸运儿。

    本文就这么结束了,希望对各位有所帮助。最近也是看到自己的代码各种BUG,也有了很多感触,希望能写出本文能加深自己对程序建壮性、稳定性的重视。

建议继续学习

  1. vim的一个js代码整理的插件jsbeautify.vim (阅读 6,020)
  2. 写代码这件事 (阅读 4,982)
  3. 多些时间能少写些代码 (阅读 4,663)
  4. 数据即代码,我和小伙伴们都惊呆了! (阅读 4,303)
  5. 如何为PHP贡献代码 (阅读 4,101)
  6. 十种更好的表达“你的代码写的很烂”的方法 (阅读 3,922)
  7. 如何写出无法维护的代码 (阅读 3,902)
  8. 在公众号中优雅地呈现代码 (阅读 3,283)
  9. 你的代码是我的地狱 (阅读 3,200)
  10. HTML代码到底该不该压缩 (阅读 3,042)