创建过于简单的函数是一种糟糕的风格吗
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(" ... ");
真的没有多大意义。(与其他相同)
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 有没有一种方法可以防止img get请求使用css或js发生
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- 从我的控制器返回一个不同于200的代码以触发ajax错误,这被认为是一种好的做法吗
- 有没有一种方法可以在控制台关闭的情况下让console.log()在IE中记录消息
- 有没有一种方法可以仅使用HTML/CSS来隐藏基于特定值的数据单元格
- 有没有一种方法可以从URL跟踪请求的域
- 有没有一种方法可以列出Ember.Object的所有绑定
- 有没有一种方法可以获得three.js的最小/lite版本
- 在JavaScript中,从主线程和回调中调用函数是一种好的风格吗
- 寻找一种风格切换器
- 创建过于简单的函数是一种糟糕的风格吗
- 有没有一种方法可以将维基百科的文章嵌入网站并进行风格化
- 试图找到一种好看的方法来使用函数式编程风格转换这个数组
- 有没有一种简单的方法来转换“;字体"style属性添加到其中的每一个'他的个人风格
- 为什么混淆JavaScript代码是一种糟糕的风格
- 另一种风格的ajax调用
- SUmmernote不能正常显示.我是说这是一种风格
- 正在寻找一种重构D3.js风格的方法链接模式的方法