使用(非)限定名称

时间:2010-04-29 16:47:55

标签: language-agnostic language-design

如果我想使用包baz中定义的名称foo|bar|quz,我有几种选择:

  1. 提供fbq作为foo|bar|quz的简称,并使用fbq|baz
    • 使用foo|bar|quz|baz
    • baz导入foo|bar|quz|baz,然后使用baz(或导入过程中提供的别名)
    • foo|bar|quz|baz导入所有公开符号,然后使用baz
  2. 对于我所知道的语言,我的看法是最好的做法是使用前两种方式(我会根据特定的包名称和我需要的符号数量来使用其中一种)。我只使用第三种语言,它不提供第一种语言,并寻找支持工具来编写import语句。在我看来,第四个应保留给设计的包而不是导入,例如,如果所有导出的符号都以前缀开头或包含包的名称。

    我的问题:

    • 您认为您最喜欢的语言的最佳做法是什么?
    • 你会用新语言建议什么?
    • 你会用旧语言建议添加这样的功能吗?

1 个答案:

答案 0 :(得分:0)

在C#中我使用选项2,这是有道理的,因为开发IDE的丰富支持。由于通常的做法是将命名空间声明为代码文件的顶部(您在项目符号中引用的导入),因此您可以一目了然地看到给定文件正在使用的内容。

我说IDE支持很重要,因为它让我可以一目了然地看到我的代码中引用的给定类来自的工具提示,并且还让我看到哪些命名空间声明实际上没有被使用并且可以被删除。

对于没有上述IDE优势的旧语言,我可能会倾向于3号,这样您仍然可以使用简洁的代码,避免混淆给定类的来源。我个人会避免选项1,因为它似乎太冗长了。

同样对于一种新语言,我的决定将取决于IDE。如果它有像​​我为C#所描述的那样的东西,我会选择选项2,否则选项3。