命名空间有啥意义? [复制]

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 的类。现在 - 你会在所有这些库文件中搜索和替换“文件”字符串吗? 可能不会;但我只想更改我刚刚创建的类的名称,并以粗体字评论我的更新 如果你在项目的任何地方都使用你的类怎么办?然后你会找到并替换吗?或者更好的例子——两个类名都有意义。你会改哪个名字?命名空间为您提供干净优雅的解决方案... 可以在两分钟内接受答案。

以上是关于命名空间有啥意义? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

将结构放入匿名命名空间有啥作用? [复制]

如果没有定义命名空间,一个类会有啥命名空间

XSD:命名空间和默认命名空间有啥区别

django url中的实例命名空间和应用程序命名空间有啥区别?

XML 命名空间有啥用?

命名空间和类有啥区别? [关闭]