西西河

主题:【原创】乱侃软件工程师的素养 1 -- poorfat

共:💬71 🌺108
全看分页树展 · 主题
家园 【原创】乱侃软件工程师的素养 1

前言

软件工程师的素养这个问题太大了,鄙人只能就我工作中的所见所闻谈一些感想。这个系列没有什么逻辑次序,想到哪儿写到哪儿,所以就叫“乱侃".

首先谈谈我比较痛恨的某些不良编程习惯。

鄙人作为一个测试工程师,经常需要检测程序员们写的代码。有一次一个程序返回了一个错误,于是我用我的IDE打开那个程序看看这个错误大概会是从哪个地方出现的。于是我就看到了这样一段代码:(以下用伪码表示)

if ( !function_one(...) || !function_two(...) || !function_three(...) )

{

return OMG_WE_FAILED;

}

看到这里我心里已经把这位程序员骂了几遍了。你把三个不同的函数调用都写在一个IF语句里,你叫我怎么知道哪个出错了呢?把这三个函数调用分别写到三个IF语句里难道你会死啊?

有人也许会说,连上调试机debugger一看不就知道了? 不错。 但是你要记住,这个程序将来是要拿去给客户运行的,而客户不一定懂如何调试。 客户只会给你打电话抱怨说你的产品又坏了。假设你的运气好,客户发现错误代码是“OMG_WE_FAILED”,那么你更大的麻烦就来了:究竟是三个函数里的那一个返回了这个错误呢?想去吧,抓破脑皮也想不出的。

如果你把三个函数调用分别放在三个IF语句里,并且分别用不同的错误代码,那么你至少可以知道哪一个函数出错了。而且这也并不增加很多工作量,但却可以减少将来查错的工作量,何乐而不为呢?

所以说,作为一个好的软件工程师,写程序的时候要时刻记得将来这个程序如何检测。程序的可测性(testability)也是很重要的。

作为软件工程师,我们大多数时间不需要写高级深奥的算法。 但是像这样简单的程序也不是随便写写就好了的。如果这也写不好,干脆别吃这碗饭了。

元宝推荐:铁手,
全看分页树展 · 主题


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河