我真的很喜欢Jeff在Spartan Programming上的帖子。我同意这样的代码阅读起来很有趣。不幸的是,我不太确定与它一起工作是否一定是一种乐趣。
多年来,我一直阅读并坚持“一行一个表达式”的做法。当许多编程书籍用示例代码反驳这个建议时,我已经打了一场好仗并坚持了自己的立场:
while (bytes = read(...))
{
...
}
while (GetMessage(...))
{
...
}
最近,出于更实际的原因,我提倡每行一个表达式 - 调试和生产支持。从生产中获取一个在“第 65 行”声明 NullPointer 异常的日志文件,内容如下:
ObjectA a = getTheUser(session.getState().getAccount().getAccountNumber());
令人沮丧并且完全可以避免。没有使用可以选择“最有可能”为空对象的代码的专家......这是一个真正的实际痛苦。
在单步执行代码时,每行一个表达式也有很大帮助。我假设大多数现代编译器可以优化掉我刚刚创建的所有多余的临时对象。
我尽量保持整洁——但是用显式对象来弄乱我的代码有时确实会让人感到费力。它通常不会使代码更易于浏览 - 但在跟踪生产中的内容或单步执行我或其他人的代码时,它确实派上了用场。
你提倡什么风格,你能在实际意义上合理化它吗?