• 您的位置我爱Aspx >> VC.Net >> 非议MFC(三)库代码的质量问题
  • 非议MFC(三)库代码的质量问题

  • 作者:aspxer  来源:internet  日期:2007-5-21 23:49:39  关键字:
  • 2.不顾效率

    <AFXWIN.H>

    class CRect : public tagRECT

    {

    BOOL PtInRect(POINT point) const;

    };

    因为POINT结构体大于32位地址长度,形参使用值传递效率不高,应该改为引用。

    软件的设计应该保持统一的取舍原则,如果说在上一点中,不惜采用那么极端的方式来提高效率,那么这里明显可以合理提高效率的地方为什么要放过呢?

    3.算法不严谨

    <AFXWIN.H>

    class CRect : public tagRECT

    {

    BOOL IsRectEmpty() const;

    };

    IsRectEmpty()函数的功能是当矩形面积为空时返回1;当矩形面积为不空时返回0。

    给出如下测试代码:

    CRect rct(100,100,0,0);

    BOOL b=rct.IsRectEmpty();

    运行后b的值居然是1!?

    有些CRect的成员函数如:IntersectRect()、UnionRect()等只有先调用NormalizeRect()才能确保获得正确结果。但IsRectEmpty()完全没必要依赖NormalizeRect(),例如可以这样实现:

    BOOL CRect::IsRectEmpty() const

    {

    return (left==right&&up==bottom ? 1 : 0);

    }

    推测起来,MFC中的实现可能是:若矩形的right<=left或bottom<=up则返回1。

    4.无故破坏约定俗成的规则

    <AFXWIN.H>

    class CRect : public tagRECT

    我对这篇文章有话说?
  • 广告位招租,广告代号:content_468_15
  • 上一篇:实战DeviceIoControl 之二:获取软盘/硬盘/光盘的参数
    下一篇:从WEB服务器下载文件的简单方法。
  • 相关文章