小知识:为何不应过度节约代码行数?

2026-05-08 17:392阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计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。

阅读全文