0

编程新手,我持有(自我强加的)概念,即(代码)行数越少越好。因此,在编写某些东西时,我不是为片段使用单独的变量,而是将所有可以嵌套的内容都嵌套到一行中。例如:

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

将上面的行分成单独的变量块是否更专业/通常更可取,使其看起来更像:

 preg_match($regExp, $bigString, $matches)

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

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


4

3 回答 3

3

您的首要目标应该是生成可读的代码,清楚地说明您的意图(使用常见的成语)。

您的第二个目标应该是确保您的程序按预期工作(牢记目标 1)。

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

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

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

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

注意:1) 和 2) 的排序取决于口味,但如果你追求“正确性”而不考虑“可读性”,你会发现自己难以理解,因此难以调试和难以维护代码

于 2012-06-20T17:48:37.687 回答
1

我认为最重要的(在大多数情况下)是您的代码是可读和可维护的。所以,如果你认为每个人都会很好地理解你在做什么,没有任何问题,那就顺其自然吧。

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

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

关于效率......创建变量本身并不是很消耗CPU,在大多数情况下,您只是创建对内存中已经存在的对象的引用,并且引用不会占用太多空间(如果我错了,请纠正我...)。

于 2012-06-20T17:51:02.607 回答
0

我不同意更少的代码行更好。如果不熟悉您的问题领域的人查看您的代码,他们是否能够理解它而无需先深入研究一堆不同的快捷功能?

如果稍后您需要进行优化,那么“工作”的完成位置也会更加清晰。循环依赖不容易被编译器优化,但很容易看出你是否编写了适用于数组的函数,而不是保存值的结构/类的数组,尽管显然直接使用数组你会有更多的代码比如果你通过指针误导或类似的东西模糊了计算。

至于您的具体示例,我认为使用变量声明来保存值是完全可以接受的,只要我可以进入 preg_match 并准确说明传递给函数的值正在做什么。如果您在更改值的情况下重复调用 preg_match ,您将特别希望执行第二种方法,因此您不必为每个函数调用进行初始化。

于 2012-06-20T19:46:29.400 回答