Language agnostic 使用(非)限定名称

Language agnostic 使用(非)限定名称,language-agnostic,language-design,Language Agnostic,Language Design,如果我想使用packagefoo | bar | quz中定义的名称baz,我有几个选择: 提供fbq作为foo | bar | quz的简称,并使用fbq | baz 使用foo | bar | quz | baz 从foo | bar | quz | baz导入baz,然后使用baz(或导入过程中给出的别名) 从foo | bar | quz | baz导入所有公共符号,然后使用baz 对于我所知道的语言,我的看法是最佳实践是使用前两种方式(我将根据具体的包全名和我需要的符号数量使用其中

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

  • 提供
    fbq
    作为
    foo | bar | quz
    的简称,并使用
    fbq | baz
    • 使用
      foo | bar | quz | baz
    • foo | bar | quz | baz
      导入
      baz
      ,然后使用
      baz
      (或导入过程中给出的别名)
    • foo | bar | quz | baz
      导入所有公共符号,然后使用
      baz
  • 对于我所知道的语言,我的看法是最佳实践是使用前两种方式(我将根据具体的包全名和我需要的符号数量使用其中一种或另一种)。我只会在不提供第一种语言的语言中使用第三种语言,并寻找支持工具来编写导入语句。在我看来,第四个符号应该保留给在设计时考虑到导入的软件包,例如,如果所有导出的符号都以前缀开头或包含软件包的名称

    我的问题是:

    • 你认为你最喜欢的语言的最佳实践是什么
    • 用一种新的语言你有什么建议
    • 用一种古老的语言,你会建议添加这样的功能吗
    在C#中,我使用选项2,这是有意义的,因为开发IDE提供了丰富的支持。由于通常的做法是在代码文件(您在要点中提到的导入)的顶部声明名称空间,因此您可以一眼看到给定文件正在使用什么

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

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

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