首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代码应该简短/简洁吗?

代码应该简短/简洁吗?
EN

Stack Overflow用户
提问于 2009-06-04 18:08:37
回答 19查看 6.5K关注 0票数 15

在编写数学证明时,一个目标是继续压缩证明。证明变得更优雅,但不一定更具可读性。当您删除不必要的字符和冗长时,压缩可以转化为更好的理解。

我经常听到开发人员说,你应该让你的代码占用尽可能小的空间。这很快就会产生无法读取的代码。在数学中,这不是这样的问题,因为练习纯粹是学术上的。然而,在时间就是金钱的生产代码中,让人们试图弄清楚一些非常简洁的代码在做什么似乎没有多大意义。对于更冗长的代码,您可以获得可读性和节省。

你在什么时候停止压缩软件代码?

EN

回答 19

Stack Overflow用户

回答已采纳

发布于 2009-06-04 18:11:08

我试图达到一种冗长的程度,我的程序语句读起来就像是任何程序员都能理解的句子。这确实意味着要对我的代码进行大量重构,这样它就只是一个故事的简短片段,所以每个操作都将在一个单独的方法中描述(更深一层的方法可能是另一个类)。

这意味着我不会因为可以用更少的字符来表达而减少我的字符数。这就是代码高尔夫比赛的意义所在。

票数 31
EN

Stack Overflow用户

发布于 2009-06-04 18:31:40

我的原则是说出你的意思。我看到人们犯错误的一种常见方式是“力量消减”。基本上,他们将他们正在思考的概念替换为似乎跳过步骤的东西。不幸的是,他们在代码中遗漏了概念,使其更难阅读。

例如,更改

代码语言:javascript
复制
for (int i = 0; i < n; i++)
    foo[i] = ...

代码语言:javascript
复制
int * p = foo, q = foo+n;
while ( *p++ = ... < q );

是强度降低的一个例子,它似乎可以节省步骤,但它忽略了foo是一个数组的事实,这使得它更难阅读。

另一种常见的方法是使用bool而不是枚举。

代码语言:javascript
复制
enum {
    MouseDown,
    MouseUp
};

让这成为现实

代码语言:javascript
复制
bool IsMouseDown;

忽略了这是一个状态机的事实,使得代码更难维护。

因此,我的经验法则是,在你的实现中,不要深入到比你试图表达的概念更低的层次。

票数 17
EN

Stack Overflow用户

发布于 2009-06-04 18:11:25

你可以通过看到冗余并消除它,或者通过聪明来使代码变得更小。做前者,而不是后者。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/952194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档