创宇实习周记之伍、六、七
最近三周都在忙碌,压缩在一篇里面写了。
测试的重要性
关于测试,很多程序员都喜欢以“工期紧”为理由拒绝写测试脚本。
但我认为这是一个错误的观念。
测试确实不好写,特别是上下文环境有要求的程序更加不好写测试。有时候写一个测试脚本甚至要花上一整天的时间。 但这都是因为测试写得少的原因。
很多时间之所以要花很多时间来写测试,是因为实在没有思路。“我该怎么测试?”
举个例子,比如验证用户登录的功能是否正确。在没有经验的情况下,很容易想“我要怎么写一个程序去模拟用户点击操作?” 但是只要写过一次这样的脚本就知道这个思路并不好,更好的思路是“我要怎么写一个程序去模拟浏览器操作?” 这样可能会更明白些。
当掌握了基本的测试思路之后,写测试就会轻松一些了。
关于测试还有很多可以讲的,但我想讲的是公司里项目的一些感想。
《重构》里不断的强调测试的重要性,是因为写了测试,才能保证重构的逻辑正确性。
而公司项目里缺少了测试,因此即使想重构,也不得不小心翼翼地去重构,甚至望而却步,被里面的逻辑吓怕。
MongoDB vs OO
MongoDB 是面向 Document 的数据库。
它的数据结构可以很灵活,结构可以任意改变。这提供了很大的便利。
最近的项目里,所有 MongoDB 的操作都是直接以 Document 的形式表示,在 Python 中就是各种 Dict。这样貌似十分方便修改数据,但实际上是挖了一个坑。
# 例子一 字段名错别字:因为都是以 Dict 的形式表示,字段名正确性都没有保证,很容易出错。
# 例子二 对象超长:Dict 形式,如果 Document 的字段很多很长的话,相应的在代码里也需要全部列出来。
# 例子三 冗余:两个相同的对象,在不同的代码块中都需要重新构造一遍。
解决办法当然是将 Document 封装成一个对象。以 OO 的思想来对象不同的 Document。