小知识:为何不应过度节约代码行数?
- 内容介绍
- 文章标签
- 相关推荐
本文共计555个文字,预计阅读时间需要3分钟。
本篇案例来自KDE4开源代码。错误代码示例:
cppvoid LDAPProtocol::del(const KUrl& _url, bool){ if ((id=mOp.del(usrc.dn()))==-1) { LDAPErr(); return; } ret=mOp.waitForResult(id, -1);}
说明:部分程序员对代码细节不够关注。
本篇案例来自KDE4 源码。
错误代码:
void LDAPProtocol::del( const KUrl &_url, bool ) { .... if ( (id = mOp.del( usrc.dn() ) == -1) ) { LDAPErr(); return; } ret = mOp.waitForResult( id, -1 ); .... }
说明:
一些程序员竭尽全力想把更多的代码压缩到一行。他们尤其热衷于“if”条件语句,把赋值和比较一次性完成。
一个典型的错误模式是使用if (A = Foo() == Error) 这样的表达式。上面我们正在处理的实例代码正是这种错误。
比较操作的优先级高于赋值操作。这就是为什么“mOp.del( usrc.dn() ) == -1″ 比较会先执行,然后“true”(1) 或“false”(0) 值被赋给变量 id。
如果mOp.del() 返回“-1”,函数会终止;否则,函数会持续运行,“id”变量会被赋予一个错误的值。它的结果总为0。
本文共计555个文字,预计阅读时间需要3分钟。
本篇案例来自KDE4开源代码。错误代码示例:
cppvoid LDAPProtocol::del(const KUrl& _url, bool){ if ((id=mOp.del(usrc.dn()))==-1) { LDAPErr(); return; } ret=mOp.waitForResult(id, -1);}
说明:部分程序员对代码细节不够关注。
本篇案例来自KDE4 源码。
错误代码:
void LDAPProtocol::del( const KUrl &_url, bool ) { .... if ( (id = mOp.del( usrc.dn() ) == -1) ) { LDAPErr(); return; } ret = mOp.waitForResult( id, -1 ); .... }
说明:
一些程序员竭尽全力想把更多的代码压缩到一行。他们尤其热衷于“if”条件语句,把赋值和比较一次性完成。
一个典型的错误模式是使用if (A = Foo() == Error) 这样的表达式。上面我们正在处理的实例代码正是这种错误。
比较操作的优先级高于赋值操作。这就是为什么“mOp.del( usrc.dn() ) == -1″ 比较会先执行,然后“true”(1) 或“false”(0) 值被赋给变量 id。
如果mOp.del() 返回“-1”,函数会终止;否则,函数会持续运行,“id”变量会被赋予一个错误的值。它的结果总为0。

