M总语录之导一下


 ……
“M老师,我们这个动态感知功能有问题,按着鼠标,系统就down了。”看到M总来到我旁边,我赶快汇报刚发现的bug。
“...在鼠标移动的时候,判断一下是否按下鼠标的任一个键,如果没按下我们就启用动态感知功能。”M总想了一下吩咐道。
这还不简单,心想。于是刷刷的写下了如下代码:

//……
if( (...) && (nFlags & (MK_LBUTTON | MK_MBUTTON | MK_RBUTTON) == 0))
{
   //……启用动态感知
}


“这样的对吗?”还没等我写完,M总就发彪了。
回头仔细一看,哦,优先级搞错了,少了对括号。于是又好不犹豫的加上了一对括号:

//……
if((...) && (nFlags & (MK_LBUTTON | MK_MBUTTON | MK_RBUTTON)) == 0))
{
   //……启用动态感知
}

心想:这下可万事大吉了。


“你这样写容易读吗?为什么不声明个变量‘导一下’呢?”M总又发话了。

导一下,挺熟悉的词汇,听过M总说过N多边了。所谓导一下,是指要使用某个函数的返回值,先声明个变量获取之,然后再对变量进行操作;或者是进行条件判断时,如果条件很多很复杂,先声明个变量取得表达式的条件值。

于是,再次返工:

UINT nBtState = nFlags & (MK_LBUTTON | MK_MBUTTON | MK_RBUTTON);
if( (...) && (nBtState == 0))
{
 //...启用动态感知
}

“这样子,不就即容易读,又会减少出错率,还方便调试了嘛。”M总语重心长地说,“下面这句也给导一下,你能保证它返回值不为NULL吗?”忽然,他指着下面的几句代码说。

//...
m_pOpMgr->GetCurrentOperator()->Capture();
//...

于是又改起来,导它一下,呵呵。
“这样导一下,不会影响执行的效率,反而会增加代码的安全性,特别是有指针的情况一定要注意……”我一边改,M总一边说。

其实这个导一下的理论听过多次了,只不过没太放在心上。不过经过这次,可得好好地记住了。

导一下海阔天空,导一下妙不可言,呵呵。


原文地址:https://www.cnblogs.com/aiwz/p/6333273.html