主题:【原创】乱侃软件工程师的素养 1 -- poorfat
前言
软件工程师的素养这个问题太大了,鄙人只能就我工作中的所见所闻谈一些感想。这个系列没有什么逻辑次序,想到哪儿写到哪儿,所以就叫“乱侃".
首先谈谈我比较痛恨的某些不良编程习惯。
鄙人作为一个测试工程师,经常需要检测程序员们写的代码。有一次一个程序返回了一个错误,于是我用我的IDE打开那个程序看看这个错误大概会是从哪个地方出现的。于是我就看到了这样一段代码:(以下用伪码表示)
if ( !function_one(...) || !function_two(...) || !function_three(...) )
{
return OMG_WE_FAILED;
}
看到这里我心里已经把这位程序员骂了几遍了。你把三个不同的函数调用都写在一个IF语句里,你叫我怎么知道哪个出错了呢?把这三个函数调用分别写到三个IF语句里难道你会死啊?
有人也许会说,连上调试机debugger一看不就知道了? 不错。 但是你要记住,这个程序将来是要拿去给客户运行的,而客户不一定懂如何调试。 客户只会给你打电话抱怨说你的产品又坏了。假设你的运气好,客户发现错误代码是“OMG_WE_FAILED”,那么你更大的麻烦就来了:究竟是三个函数里的那一个返回了这个错误呢?想去吧,抓破脑皮也想不出的。
如果你把三个函数调用分别放在三个IF语句里,并且分别用不同的错误代码,那么你至少可以知道哪一个函数出错了。而且这也并不增加很多工作量,但却可以减少将来查错的工作量,何乐而不为呢?
所以说,作为一个好的软件工程师,写程序的时候要时刻记得将来这个程序如何检测。程序的可测性(testability)也是很重要的。
作为软件工程师,我们大多数时间不需要写高级深奥的算法。 但是像这样简单的程序也不是随便写写就好了的。如果这也写不好,干脆别吃这碗饭了。
- 相关回复 上下关系8
🙂【原创】乱侃软件工程师的素养 1
🙂曾在if判断里把一个正则表达式写成六行的菜鸟飘过 空格 字55 2011-01-18 01:14:08
🙂【原创】素养 (5) 留下痕迹案例2 7 poorfat 字1804 2008-08-21 20:54:22
🙂自顶旧文,聊以自勉 poorfat 字60 2011-01-09 10:05:19
🙂多谢多谢。让我想到西西河的一个问题,有了一些启发 铁手 字0 2008-08-27 16:23:28
🙂命令行赋值语句提出来放在第一行更好些吧? 不远攸高 字12 2008-08-21 21:19:23
🙂不见得,讨论一下 6 pix 字506 2008-08-14 15:28:23
🙂硬件发展到这个地步已经没有必要追求编程小技巧了 金口玉言 字124 2008-08-16 18:45:42