在编写数学证明时,一个目标是继续压缩证明。证明变得更优雅,但不一定更具可读性。当您删除不必要的字符和冗长时,压缩可以转化为更好的理解。
我经常听到开发人员说,你应该让你的代码占用尽可能小的空间。这很快就会产生无法读取的代码。在数学中,这不是这样的问题,因为练习纯粹是学术上的。然而,在时间就是金钱的生产代码中,让人们试图弄清楚一些非常简洁的代码在做什么似乎没有多大意义。对于更冗长的代码,您可以获得可读性和节省。
你在什么时候停止压缩软件代码?
发布于 2009-06-04 18:11:08
我试图达到一种冗长的程度,我的程序语句读起来就像是任何程序员都能理解的句子。这确实意味着要对我的代码进行大量重构,这样它就只是一个故事的简短片段,所以每个操作都将在一个单独的方法中描述(更深一层的方法可能是另一个类)。
这意味着我不会因为可以用更少的字符来表达而减少我的字符数。这就是代码高尔夫比赛的意义所在。
发布于 2009-06-04 18:31:40
我的原则是说出你的意思。我看到人们犯错误的一种常见方式是“力量消减”。基本上,他们将他们正在思考的概念替换为似乎跳过步骤的东西。不幸的是,他们在代码中遗漏了概念,使其更难阅读。
例如,更改
for (int i = 0; i < n; i++)
foo[i] = ...至
int * p = foo, q = foo+n;
while ( *p++ = ... < q );是强度降低的一个例子,它似乎可以节省步骤,但它忽略了foo是一个数组的事实,这使得它更难阅读。
另一种常见的方法是使用bool而不是枚举。
enum {
MouseDown,
MouseUp
};让这成为现实
bool IsMouseDown;忽略了这是一个状态机的事实,使得代码更难维护。
因此,我的经验法则是,在你的实现中,不要深入到比你试图表达的概念更低的层次。
发布于 2009-06-04 18:11:25
你可以通过看到冗余并消除它,或者通过聪明来使代码变得更小。做前者,而不是后者。
https://stackoverflow.com/questions/952194
复制相似问题