【发布时间】:2014-06-13 21:33:35
【问题描述】:
在为多人游戏编写服务器应用程序时,我想到了一些清理代码的想法。
我在我的应用程序中大量使用Module Pattern,并使用约定来调用公开函数public[Function name] 和私有函数private[Function name]。 public 前缀有助于返回分配:
return {
get : publicGet
}
但是私有标识符名称只是为了展示,使调用它们有点麻烦。但是,完全删除 private 前缀会使代码的可读性降低。所以我想像在 Java 中那样使用保留的 private 关键字。
为此,我想我可以像这样使用eval:
var private = eval('') // Just an empty assignment so it does nothing.
所以我可以这样写我的私有函数:
private function initiateGameMatchmaker(game) {
// Code...
}
代替:
function privateInitiateGameMatchmaker(game) {
// Code...
}
这是可以接受的,还是您认为这是一种肮脏的黑客行为,因此是绝对的禁忌?
【问题讨论】:
-
你试过了吗?它实际上不起作用。只需使用约定并坚持下去。也许
_initiateGameMatchmaker. -
接受与否,都行不通。
private将是undefined,privare function foo(){}将抛出SyntaxError: Unexpected token function -
我的错,我以为我可以让它工作,但我运行的是一个过时的版本。我稍后会删除这个问题。
-
不要删除问题。以这种方式可能无法做到这一点,但这仍然是一个有效的问题。如果有人寻找这样的问题,“不,这不可能” 比根本没有答案更好。
-
那我就不说了,谢谢。
标签: javascript node.js module scope eval