Zac*_*bey 11 javascript maintainability comments iife
在JS代码中使用命名IIFE来描述和分组相关代码的利弊是什么?
我一直在使用这个"模式"来为我的更多程序代码提供结构,这些代码只能在一个地方执行.
(function hideStuffOnInstantiaton(){
$('oneThing').hide().removeClass();
$('#somethign_else').slideUp();
$('.foo').fadeOut();
}());
Run Code Online (Sandbox Code Playgroud)
我觉得这比两者都好:
// hide Stuff on Instantiaton
$('oneThing').hide().removeClass();
$('#somethign_else').slideUp();
$('.foo').fadeOut();
Run Code Online (Sandbox Code Playgroud)
因为随着时间的推移,评论可能会与代码分开,而且评论所适用的行不是很明显
并:
function hideStuffOnInstantiaton(){
$('oneThing').hide().removeClass();
$('#somethign_else').slideUp();
$('.foo').fadeOut();
};
hideStuffOnInstantiaton();
Run Code Online (Sandbox Code Playgroud)
因为如果它只在一个地方执行,为什么要分开函数及其执行?
使用此模式时是否存在任何性能,可维护性,可测试性或跨浏览器注意事项?我不相信我已经看到很多人在野外使用它但我觉得它可能非常有用
我一直认为标签很酷:
hideStuffOnInstantiaton: {
$('oneThing').hide().removeClass();
$('#somethign_else').slideUp();
$('.foo').fadeOut();
}
Run Code Online (Sandbox Code Playgroud)
实际上,这样做通常很愚蠢.相反,分组功能通常属于其自己的功能.
如果它只在一个地方执行,为什么将函数及其执行分开?
在这种情况下,没有理由使用一个函数(带有它的开销) - 只需内联代码.并且不要在函数名称中隐藏注释,我称之为不好的做法.如果有人将评论从代码中分离出来,那不是你的错 - 实际上他也可以在你的IENFE中打包完全不相关的东西.
虽然如果你重复使用函数(递归)或需要它来构建一个闭包的东西,并且命名函数使堆栈跟踪更容易调试,这种模式可能是有用的,IE中存在各种错误.如果你真的不需要它,那就避免它 - 而你却不需要它.
如果您想表达您的注释适用于代码块,您可以明确地使用块语句并将注释放在首位:
{ // hide Stuff on Instantiaton
$('oneThing').hide().removeClass();
$('#somethign_else').slideUp();
$('.foo').fadeOut();
}
Run Code Online (Sandbox Code Playgroud)
...虽然这可能会让你的读者和多余的IEFE一样迷惑.
| 归档时间: |
|
| 查看次数: |
3715 次 |
| 最近记录: |