最近的工程经验

技术宅 rainforest 8年前 (2012-06-11) 1391次浏览 0个评论

有很长一段时间没有些技术博客了。这段时间也没有去钻研技术了,但这么一段时间里,也积累了一些工程方面的经验,分享给大家。

1、对输入做一定的假设:我在工作当中经常是要处理网页的。一般来说网页的大小大概在几十k到几M,但有的时候也可能碰到一些特殊的网页,可能会是几十M。如果我们不对输入做一定的假设的话,对一些特殊的网页不进行过滤的时候,很有可能在最后造成程序的崩溃(出core)。尤其是在经常调用别人的类库的情况下,一些特殊的输入可能导致莫名奇妙的问题。我们要对输入做一定的假设,过滤掉特殊的输入。比如,对于网页来说,我们要过滤掉太大的网页。因为太大的网页可能导致内存消耗过大等多种问题。一般来说,我们建议网页html长度超过4M就不应该处理,否则处理的成本就比较大(比如建dom树将耗费大量的内存和cpu)。

2、写单测很重要:不管多么简单的程序,都应该写单测,确保程序的正确执行。有的时候,我们会觉得程序相当简单,东东脚趾头都能写出来。能很容易写出来,并不代表能很容易写对程序。所以不管多简单的功能,都应该写单测。单测还有另外一个好处,就是让你写的代码变得可测。因为当你发现无法写测试用例的时候,你就会想办法将原来的函数做一定的处理,比如分拆等。

3、如何面对泄露的问题:第一就是要预防,写程序要养成良好的习惯,指针定义的时候,一定要初始化为NULL,delete指针后,也应该设置为NULL。对于成员指针,在析构的时候,要有delete,防止内存泄露的可能。new和delete配套使用,malloc和free配套,不要交叉使用。不要人为估计一个对象或值得长度,要用sizeof。第二,当出现内存泄露的情况的时候,可以用valgrind进行检查,还可以使用tcmalloc进行检查。

4、程序对外的隐藏:比如你写一个类,要用到另外一个类,你不应该在当前类的头文件中,直接include另外一个类的头文件,而只应该做一个声明。比如你要在B类中引用A类,正确的做法是:

b.h

class A;
class B
{
private:
    A *mp_a;
};

b.cpp

#include "b.h"
#include "a.h"

...

目前暂时想到这么多吧,希望对大家有所帮助,很晚了,要睡觉了,今天就不写了。


乐趣公园 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:最近的工程经验
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址