应该尝试尽可能地压缩他们的代码吗?

时间:2012-06-20 17:41:46

标签: readability performance

编程新手,我坚持(自我强加)的观念,即(代码的)线越少越好。因此,在编写某些东西时,我已经将所有可能的东西嵌入到一行中,而不是单独使用各个变量。例如:

preg_match('~><a href=~', substr(file_get_contents($match[1])), strpos($match[1], "help")), $match_rating)

将上面的行划分为单独的变量块会更专业/更普遍 - 所以它看起来更像是:

 preg_match($regExp, $bigString, $matches)

..上面定义的每个变量/片段都有自己的行(和变量)?

我想知道这是不是更好或更有效,因为它似乎会让其他人难以阅读和破译它。我意识到这可能是一种个人偏好类型的交易,但它是否存在一个普遍持有(专业)标准的哪一方倾向于?


3 个答案:

答案 0 :(得分:3)

你的首要目标应该是制作可读的代码,明确表达你的意图(使用常用的习语)。

您的第二个目标应该是确保您的计划按预期运作(牢记目标1)。

如果您实现了第一个目标并且发现存在性能/内存问题,那么您需要考虑如何使代码更高效。如果你到达这个部分,第一步是测量问题所在;然后修复那一部分(可能偏离上面的目标1) - 如果仍有性能/内存问题,请进行冲洗和重复。

在您的特定示例中,将部分表达式存储在变量中通常是有益的(例如,您可以在调试器中轻松检查它们或在调试时将其打印出来)。如果你有一个不错的编译器,这不应该影响效率(编译器可以根据需要优化你的代码)。

此外,最好保持线条短,因此易于阅读。您的第一个代码示例应该 - 至少 - 分成多行(即使保留一个表达式)

如果使用变量存储部分表达式结果,请选择指示该变量角色的名称 - 如果您可以使用多个reg.ex,请选择一个名称来指示该变量。这样您就可以帮助读者更好地理解您的意图

注意:1)和2)的排序依赖于味道,但如果你不顾“可读性”而去“正确”,你会发现自己难以理解,因此很难调试和难以维护的代码

答案 1 :(得分:1)

我认为最重要的(在大多数情况下)是你的代码是可读的和可持久的。因此,如果你认为每个人都能很好地理解你正在做的事情,没有任何问题,那就按照它的方式进行。

我个人仅在我需要在其他地方重用它们时使用变量,或者当表达式非常大并且没有它们时变得难以阅读。它们也可以充当“标签”,以帮助理解代码块是什么,或者是什么(所以不需要注释)。

但是为每件小事创建一个变量并不好,它会为你的代码添加不必要的行。在某些情况下,我不会使用它们。

关于效率......创建变量本身并不是非常耗费CPU,在大多数情况下,你只是在内存中创建对已经存在的对象的引用,并且引用不会占用大量空间我错了......)。

答案 2 :(得分:0)

我不同意更少的代码行更好。如果不熟悉您的问题域的人要查看您的代码,他们是否能够理解它而不必首先潜入一堆不同的快捷方式功能?

如果稍后您需要进行优化,那么“工作”也将更加清晰。编译器不容易优化循环依赖,但是很容易看出你是否有编写函数的函数与包含值的结构/类的数组,尽管很明显直接使用数组你会有更多的代码而不是你通过指针误导或类似的东西掩盖了计算。

至于你的具体例子,我认为拥有保存值的变量声明是完全可以接受的,只要我可以进入preg_match并准确告诉传递给函数的值是做了什么。如果您使用更改的值重复调用preg_match,您将特别想要第二种方式,因此您不必为每个函数调用进行初始化。