创建过于简单的函数是一种糟糕的风格吗


Is it bad style to create overly simple functions?

我只是想知道,为相对简单的任务创建函数(分解)是不是一种糟糕的编程风格?

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

其他一些例子:

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

还有一个稍微偏离主题的问题——我习惯于使用更"严格"数组的语言;在PHP中,只需说myArray[]="newElement",就可以在end buy中添加一个元素。我觉得我应该做myArray[sizeof(myArray)],但我敢打赌,添加非二进制代码可能是一种糟糕的风格。

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

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

  • 第二,如果这些函数最终相互调用,那么你最终会得到一个函数调用的老鼠窝。跟随一个10行(甚至30行)函数比跟踪一个调用另一个2行函数的2行函数更容易,该2行函数调用整个另一个可能调用也可能不调用另一条2行函数。你必须在文件中来回切换(或者更糟的是,在一堆不同的文件之间切换),才能追踪代码。

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

只有当你的名字不够详细时——如果它们太短,你最终会无意中混淆你的代码,以供未来的维护人员使用。另一方面,如果它们足够冗长,那么一半的时间使用原始代码会更快。如果为了避免"多余"的键入而使用过短的函数名,那么分解是个坏主意。

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

System.out.println(" ... ");vsMyUtils.println(" ... ");

真的没有多大意义。(与其他相同)

相关文章: