来吧,接着上篇(写模块化的代码)继续写,今天讲讲如何写优雅的代码。

spaghetti code用来形容那些非结构化和难以维护的代码,这种代码绕来绕去,很难理清其中的逻辑关系。那么,什么是优雅的代码呢?

如果我们忽略具体的内容,从大体结构上来看,优雅的代码看起来就像是一些整整齐齐,套在一起的盒子。如果跟整理房间做一个类比,就很容易理解。如果把所有物品都丢在一个很大的抽屉里,那么它们就会全都混在一起,很难整理,很难迅速的找到需要的东西。但是如果在抽屉里再放几个小盒子,把物品分门别类放进去,那么它们就不会到处乱跑,我们也可以比较容易的找到和管理它们。

优雅的代码的另一个特征是,它的逻辑大体上看起来,是枝丫分明的树状结构(tree)。这是因为程序所做的几乎一切事情,都是信息的传递和分支,我们可以把代码看成是一个电路,电流经过导线,分流或者汇合。如果这样思考,我们的代码里就会比较少出现只有一个分支的if语句,它看起来就会像这个样子:

if (...) {
  if (...) {
    ...
  } else {
    ...
  }
} else if (...) {
  ...
} else {
  ...
}

注意到没?

在上面的代码里面,if语句几乎总是有两个分支。它们有可能嵌套,有可能有多层的缩进,而且else分支里面有可能出现少量重复的代码。然而这样的结构,逻辑却非常严密和清晰。

添加新评论