Questions tagged «namespace»

命名空间是许多编程语言的语言功能,它允许在本地重用类和变量名。

4
为什么这么多名称空间以com开头
我注意到许多公司都使用“反向域名”名称空间,我很好奇这种做法的起源以及为什么这种做法会持续下去。它是否仅由于死记硬背而继续存在,还是这里可能缺少我想念的出色的体系结构概念? 还请注意以下问题:https ://stackoverflow.com/questions/189209/do-you-really-use-your-reverse-domain-for-package-naming-in-java,可以回答我的问题,但不能回答100 % (如果让您感觉更好,我真的很好奇我是否应该将它用于我的javascript命名间隔工作,但是我对何时何地以及为什么这样更感到好奇,这应该可以帮助我指导javascript答案,而不是bene:“窗口”) 这种做法的示例扩展到文件夹和文件:

6
为什么“功能与数据之间的紧密耦合”不好?
我在第40页的“ Clojure的喜悦 ”中找到了这句话。32岁,但上周晚饭时有人对我说了同样的话,我在其他地方也听说过: [A]面向对象编程的缺点是函数和数据之间的紧密耦合。 我理解为什么不必要的耦合在应用程序中不好。我也很高兴地说,即使在面向对象的编程中,也应避免避免可变状态和继承。但是我看不到为什么在类上粘贴函数本质上是不好的。 我的意思是,向类添加功能似乎就像在Gmail中标记邮件,或将文件粘贴在文件夹中。这是一种组织技巧,可帮助您再次找到它。您选择一些条件,然后将类似的东西放在一起。在OOP之前,我们的程序几乎是文件中方法的一大包。我的意思是,您必须将函数放在某个地方。为什么不组织它们? 如果这是对类型的公开攻击,为什么他们不只是说将输入和输出的类型限制为一个函数是错误的?我不确定是否可以同意这一点,但是至少我对pro和con类型安全性论点很熟悉。在我看来,这似乎是一个主要的问题。 当然,有时人们会错误地将功能放在错误的类上。但是与其他错误相比,这似乎是一个很小的麻烦。 因此,Clojure具有名称空间。在OOP中将函数粘贴在类上与在Clojure中将函数粘贴在命名空间中有什么不同,为什么这么糟?请记住,类中的函数不一定只在该类的成员上运行。看一下java.lang.StringBuilder-它可以对任何引用类型进行操作,也可以通过自动装箱对任何类型进行操作。 PS此引用引用了一本书,但我没有读过:《Leda中的Multiparadigm编程》:Timothy Budd,1995年。

5
在C ++中使用名称空间的最佳做法
几个月前,我读过Bob叔叔的Clean Code,它对我编写代码的方式产生了深远的影响。即使看起来他在重复每个程序员都应该知道的事情,将它们放在一起并付诸实践确实可以使代码更简洁。特别是,我发现将大型函数分解为许多微型函数,并将大型类分解为许多微型类非常有用。 现在问这个问题。本书的示例全部使用Java,而过去几年我一直在使用C ++。干净代码中的想法如何扩展到Java中不存在的名称空间的使用?(是的,我知道Java程序包,但是并不是完全一样。) 将创建许多微小实体(每个都有明确定义的责任)的想法应用于命名空间是否有意义?一小组相关类是否应该始终包装在命名空间中?这是管理拥有许多小类的复杂性的方法,还是管理大量名称空间的成本过高? 编辑:在有关包装原则的Wikipedia条目中回答了我的问题。
38 design  c++  namespace 

4
库的C#名称空间和类命名约定
我正在用C#构建带有各种小型实用程序函数的库,并尝试确定名称空间和类命名约定。我目前的组织是这样的: Company Company.TextUtils public class TextUtils {...} Company.MathsUtils public class MathsUtils {...} public class ArbitraryPrecisionNumber {...} public class MathsNotation {...} Company.SIUnits public enum SISuffixes {...} public class SIUnits {...} 这是组织名称空间和类的好方法,还是有更好的方法?特别是,在名称空间和类名称(例如,Company.TextUtils名称空间和TextUtils类)中具有相同的名称似乎只是重复,这表明该方案可能会更好。
26 c#  naming  namespace 

4
为什么我们需要XML名称空间的URI?
我试图弄清楚为什么我们需要用于XML名称空间的URI,而我找不到这样做的目的。谁能在一个具体的例子中使我有所作为呢? 编辑: 好吧,例如:我来自w3schools <root xmlns:h="http://www.w3.org/TR/html4/" xmlns:f="http://www.w3schools.com/furniture"> <h:table> <h:tr> <h:td>Apples</h:td> <h:td>Bananas</h:td> </h:tr> </h:table> <f:table> <f:name>African Coffee Table</f:name> <f:width>80</f:width> <f:length>120</f:length> </f:table> </root> 那么应该http://www.w3schools.com/furniture持有什么呢?
23 xml  namespace 

5
使用静态类作为名称空间
此问题是从Stack Overflow 迁移而来的,因为可以在Software Engineering Stack Exchange上回答。 迁移 8年前。 我看到其他开发人员使用静态类作为名称空间 public static class CategoryA { public class Item1 { public void DoSomething() { } } public class Item2 { public void DoSomething() { } } } public static class CategoryB { public class Item3 { public void DoSomething() { } } …

1
命名空间与在PHP中包含/要求的优缺点?
我最近开始在PHP中使用名称空间。当我第一次看到它们时,我认为它们的语法很丑陋,我永远不会使用它们。但是,我创建了一个自动加载器(spl_autoload_register),这样就不必再编写include / require语句了。 我喜欢名称空间,但是与include / require语句相比有客观的好处吗?或者它们是实现相同目标的完全相同的方法吗?
20 php  namespace 

4
从语义上来说,比`util`更合适的软件包名称是?
就像一个稻草人考虑的那样,java.util它是各种课程的垃圾场,在大多数情况下,除了让他们在那里的人懒惰或没有动力为他们的课程提出一个语义上更正确的软件包名称外,大多数情况下没有其他共同点。 作为一个示例,使用该类UUID在该语义上正确的包名称是什么? 我正在努力实现自己的UUID类,以使其更加轻巧。我不想使用me.myproject.util.UUID我的包裹名称。 我考虑过,me.myproject.rfc4122.UUID但这并不意味着使用的语义UUID。 我也考虑过,me.myproject.uuid.UUID但我不喜欢重言式,尽管在Python中将同名的类放入模块中是一种流行的方法,而packagesJava在语义上并不等同modules于Python。 我也考虑me.myproject.UUID但拒绝了它,因为我不想用不相关的内容污染名称空间的那一部分。这只是使问题更上一层楼。 我也考虑过,me.myproject.lib.UUID但这并没有更多的语义含义.util,只是重命名了问题。 semantics:与意义有关的语言学和逻辑学分支。

4
在C ++中使用`using`还是避免使用?
由于ADL造成了语义上的细微差别,我通常应如何使用using?为什么?是否与情况有关(例如,标头为#included而源文件为d)? 另外,我该选择::std::还是std::? 命名空间级别using namespace: using namespace std; pair<string::const_iterator, string::const_iterator> f(const string &s) { return make_pair(s.begin(), s.end()); } 完全明确: std::pair<std::string::const_iterator, std::string::const_iterator> f(const std::string &s) { return std::make_pair(s.begin(), s.end()); } 命名空间级别的使用声明: using std::pair; using std::string; pair<string::const_iterator, string::const_iterator> f(const string &s) { return make_pair(s.begin(), s.end()); } 局部函数使用声明: std::pair<std::string::const_iterator, std::string::const_iterator> f(const std::string &s) { …
17 c++  namespace 

1
iOS / OSX开源项目的命名约定
并非总是如此,但在大多数情况下,您会发现iOS或Mac OS X开源项目,其名称以作者姓氏和名字的首字母开头。如果项目要由Nick Leblanc创作,则该项目将被读取为NLMyProject。 例子: 符文·马德森(Rune Madsen)的RMSwipeTableViewCell, Ezequiel Becerra的EBCardCollectionViewLayout, SDiPhoneVersion塞巴斯蒂安Dobrincu, Leo Natan的LNNotificationsUI。 那是哪里来的 是否有人首先以这种方式编写的,然后其他人都遵循? 即使在《苹果指南》中,我也找不到任何相关信息。那个成语写在任何地方吗?

2
为什么要对结构使用typedef?
在C语言(ANSI,C99等)中,结构存在于自己的名称空间中。链表的结构可能看起来像这样: struct my_buffer_type { struct my_buffer_type * next; struct my_buffer_type * prev; void * data; }; 然而,对于大多数C程序员来说,自动对这些结构进行如下类型的定义似乎是很自然的: typedef struct tag_buffer_type { struct tag_buffer_type * next; struct tag_buffer_type * prev; void * data; } my_buffer_type; 然后像普通类型一样引用该结构,即get_next_element(my_buffer_type * ptr)。 现在我的问题是:是否有特定原因? 维基百科说http://en.wikipedia.org/wiki/Typedef#Usage_concerns 有些人反对typedef的广泛使用。大多数参数都以typedef仅隐藏变量的实际数据类型为中心。例如,Linux内核黑客和文档编制者Greg Kroah-Hartman阻止将它们用于除函数原型声明以外的任何内容。他认为这种做法不仅不必要地混淆了代码,而且还可能导致程序员意外地滥用大型结构,认为它们是简单的类型。[4] 其他人则认为,使用typedef可以使代码更易于维护。K&R指出使用typedef有两个原因。首先,它提供了使程序更具可移植性的方法。不必更改在程序源文件中出现的所有类型的类型,只需更改单个typedef语句即可。其次,typedef可以使复杂的声明更易于理解。 我个人想知道,使用单独的struct命名空间是否有时没有使用类型定义的结构没有足够的好处,并且由于周围存在着几种C编程文化(我的经验是Windows C编程与Linux C编程有着不同的传统),如果还有其他我不了解的传统。 然后,我对历史考量(C的前身,第一个版本)感兴趣。

1
评估PHP名称空间
我现在处于开源PHP项目的预发布阶段,我希望其他开发人员可以在自己的项目中使用该项目。该项目当前不支持名称空间,我正在尝试评估它是否应该使用名称空间或Dir_Subdir_Class的PEAR命名约定,这似乎具有所有相同的技术优点,而没有一些缺点。老实说,这不是一个容易的选择。 关于名称空间的一些注意事项: 我的项目试图通过提供比其他类似项目更简单的API来与众不同的方式之一。因为名称空间是新的,而且因为它们比PEAR命名约定更复杂,所以将它们引入代码库会使我的项目使用起来不那么简单。通过实施它们,我在易用性方面失去了一些差异。 虽然我看到了命名空间的一些好处,但它们似乎并没有解决使用PEAR命名约定的现代PHP产品中需要解决的问题。使用项目时,如果不存在命名冲突,则应尽量减少。 这文章给了我在采用的命名空间及其实施已不到恒星一些暂停。 我也很犹豫,跳上一个可能永远不会走的潮流。由于名称空间是PHP的新功能,因此我还不确定它们将成为标准的。 兼容性。几乎所有以前写过的PHP代码都不使用名称空间,因为它是一项新功能。如果不进行转换,其他库将不兼容。 使用名称空间的一些要点: 知觉。如果名称空间成为标准和最佳实践,那么没有它们,我的项目很快就会被视为不专业且过时的项目。 竞争。尽管一些竞争的PHP项目开始在其最新版本中使用名称空间,但许多项目尚未实现飞跃。现在这样做可以使我的项目在其他项目上有优势。 如果我现在在项目公开之前而不是之后进行转换,那以后的工作会更容易,因为我不得不暂时支持它的两个版本。 我想支持最佳实践,如果名称空间成为PHP的最佳实践,则我的项目应使用它们。 据我所知,您必须选择一种方法。你不能两者都做。有没有我没有考虑的观点?是否有任何客观的迹象(请不要烈火)指向或反对命名空间成为PHP的专业标准?我将不胜感激,您愿意分享任何见解或资源,因为我需要尽快做出决定。
11 php  namespace 

1
C ++中的静态全局变量和匿名名称空间
为什么在引入静态全局变量(内部链接)和未命名的命名空间中的符号(外部链接,无论如何都无法从外部引用它)之间进行区分? 这些原因是否仍然有效,还是有新的原因? 除了匿名全局(或命名空间范围)联合必须具有static的任意规则之外,还剩下什么地方,它们又是什么? 对于积分,如果没有充分的理由使它们有所不同,是否有要求使它们相等的要求? 当C ++引入名称空间(C ++ 98),特别是未命名的名称空间时,由于热情高涨,静态全局变量被弃用,不如新事物,尽管C ++ 11对此进行了还原: 弃用static关键字…不再? 在C ++ 11之前,不能将具有内部链接的符号用作模板参数:为什么C ++ 03要求模板参数具有外部链接?

4
命名空间中的类数-代码气味?
我有一个C#库,该库由多个可执行文件使用。库中只有几个命名空间,我只是注意到其中一个命名空间中包含许多类。由于分类,我总是避免在单个名称空间中包含太多的类,并且因为在潜意识里,我认为具有更深层次的名称空间层次结构看起来“更漂亮”。 我的问题是:当一个命名空间具有许多类时,即使这些类彼此相关,是否有人将其视为“代码气味”?您是否会花大力气在允许子分类的类中找到细微差别?
11 c#  count  namespace 

2
如何在不破坏现有代码的情况下将PHP名称空间部分添加到库中?
多年来,我公司创建了一个模块化PHP框架,早在PHP 5.3添加名称空间之前就已经开始。最近,我们决定开始在库的新代码中使用名称空间,并且我们最终打算在旧代码中使用名称空间。但是,我们有一些问题正在尝试解决,以确定是否将名称空间添加到v5.3之前的代码库中不是一个好主意: 我可以为一个类命名空间,也可以导入(使用)全局命名空间,以便所有全局类都不需要\前缀吗? 如果我们在库中为现有类命名空间,那么如何在框架升级后防止所有现有项目中断?例如,库可以将class的名称更改ThemeEngine为\module\theme\ThemeEngine,但现有网站ThemeEngine无需任何代码修改即可调用吗?如果是这样,该代码将是什么样?
10 php  namespace 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.