1

我只是想知道-为相对简单的任务创建函数(分解)是不好的编程风格吗?

例如,在 PHP 中,我发现在 session、post、get 和 cookie 中使用 '$_' 和大写字母很烦人。因此,如果我创建了一个名为 setSesVar('key', 'value') 的函数来为我创建一个会话变量,这很糟糕吗?每次为它调用函数的开销是否值得?还是无关/自己的偏好?

其他一些例子:

  • c++(和java)中的printLn函数
  • Javascript 中 getElementBydId 的简写形式(假设我不使用 jQuery 或其他库)
  • 重定向代替 PHP 中的 header('Location: ' . url)

还有一个稍微偏离主题的问题——我习惯于使用更“严格”数组的语言;在 PHP 中,您可以在末尾添加一个元素,只需说 myArray[] = 'newElement'。我觉得我应该做 myArray[sizeof(myArray)] 但我敢打赌添加不必要的代码可能是不好的风格。

4

3 回答 3

1

取决于函数的作用,以及你做了多少。如果你把所有东西都拿出来做一个单行函数,那么你还没有真正摆脱任何复杂性。事实上,您通过两种方式增加了复杂性:

  • 首先,PHP 中没有内置的任何东西都是您的代码新手必须弄清楚的。如果我看到$_SESSION['stuff'] = "some value";了,我就知道它在做什么——就像任何使用 PHP 超过一个小时的人一样。另一方面,如果我看到setSessionVar('stuff', 'some value');了,我必须去确认发生了什么setSessionVar。我的意思是,它要做的不仅仅是设置一些东西$_SESSION;否则,为什么不这样做呢?

  • 其次,如果这些函数最终相互调用,那么您最终会得到一个老鼠巢穴的函数调用。跟踪 10 行(甚至 30 行)函数比跟踪调用另一个 2 行函数的 2 行函数更容易,该函数调用可能会或可能不会调用另一个 2 的整个其他 2 行函数线函数。您必须通过文件(或者更糟的是,在一堆不同文件之间进行选项卡)悠悠球,以便通过代码跟踪您的方式。

在我看来,任何内置在 PHP 中的东西——并且可以用一行简单的代码来表达——都不值得拥有自己的功能。我建议将函数限制为至少 3 行,但有一个例外:需要访问对象内部的方法(例如 getter 或 setter)可以更小。但是大多数函数应该做一些 PHP 还没有做的事情;如果他们不这样做,那么您就违背了函数的目的并无缘无故地增加了复杂性。

于 2012-04-07T05:03:33.703 回答
1

只有当你的名字不够冗长时——如果它们太短,你最终会无意中为未来的维护者混淆你的代码。另一方面,如果它们足够冗长,一半的时间使用原始代码会更快。如果您使用过短的函数名称以避免“额外”输入,我会说分解只是一个坏主意。

于 2012-04-07T03:35:56.100 回答
0

我想这将取决于。你会把这些函数放在哪里?最重要的是,如果您要在每个班级中复制这些内容,那么这可能是个坏主意。如果您将它们放在某个 utils 类中,那么无论如何,目的可能会被打败:

System.out.println(" ... "); 对比 MyUtils.println(" ... ");

真的没有多大意义。(和其他人一样)

于 2012-04-07T03:37:24.083 回答