命名空间有啥意义? [复制]
Posted
技术标签:
【中文标题】命名空间有啥意义? [复制]【英文标题】:What is the point in NameSpaces? [duplicate]命名空间有什么意义? [复制] 【发布时间】:2012-12-27 14:26:13 【问题描述】:可能重复:What are namespaces?
据我了解,命名空间允许您在脚本的不同命名空间内拥有同名的函数/变量。
namespace productions\active;
class Slayer
function Username ()
$Username = "Test";
return $Username;
namespace productions\experimental;
class Slayer
function Username()
$Username = "Experiemental";
return $Username;
但这提供了什么功能?
此外,如果我的类中有公共函数并且“存在”在命名空间中,会发生什么情况?
【问题讨论】:
命名空间应该是一种更方便的替代方法,它可以使用 Under_Score_Prefixes 手动避免 类名冲突。另见http://en.wikipedia.org/wiki/Namespace_(computer_science) 你有没有遇到过两个同名的类/函数?说两个File
类,一个来自库,一个来自您自己的代码?命名空间解决了这个问题。
我个人认为使用命名空间没有任何实用性,如果你需要做两个独立的事情,那么你会创建两个独立的函数,而不是创建命名空间以具有相同的函数名称。
那么您可能似乎对实际代码几乎没有经验。包含外部库是非常典型的。如果这些库中的类和函数的命名有些传统,那么名称冲突确实并不少见。 File
通常是一个合理的类名,有两个库使用它也就不足为奇了。这不仅仅是关于你的代码。
一个大项目有不止一个程序员。所以每个程序员都必须独立编写代码,这些代码必须与其他程序员的代码一起工作。而且它恰好有相同的类/函数名称 -> 错误。
【参考方案1】:
如果您必须在同一个项目中使用两个具有相同类名的库,那将是显而易见的(是的,这可能会发生)。使用命名空间,您可以为其中一个创建别名,并在不考虑库核心的情况下同时使用两者。
【讨论】:
我个人认为使用命名空间没有任何实用性,如果你需要做两个独立的事情,那么你会创建两个独立的函数,而不是创建命名空间以具有相同的函数名称。 这是几乎所有编程语言中的常用技术。正如@deceze 在对您的问题的评论中提到的那样......想象一下 - 您迫切需要使用一些庞大的库。它定义了名为 File 的类。现在 - 你会在所有这些库文件中搜索和替换“文件”字符串吗? 可能不会;但我只想更改我刚刚创建的类的名称,并以粗体字评论我的更新 如果你在项目的任何地方都使用你的类怎么办?然后你会找到并替换吗?或者更好的例子——两个类名都有意义。你会改哪个名字?命名空间为您提供干净优雅的解决方案... 可以在两分钟内接受答案。以上是关于命名空间有啥意义? [复制]的主要内容,如果未能解决你的问题,请参考以下文章