【问题标题】:Which abbreviations should we use for python variable names?我们应该为 python 变量名使用哪些缩写?
【发布时间】:2010-12-05 12:45:26
【问题描述】:

通常我使用 PEP-8 中规定的标准命名变量。喜欢:

delete_projects
connect_server

但有时我找不到任何好名字,名字只是延长了一个长的名字:

project_name_to_be_deleted 

我可以使用 pr_nm_del ,但这会使代码不可读。我真的很难为函数找到好的变量名。每当我开始编写一个新函数时,我只是花时间寻找一个好的变量名。

是否有任何标准可以为众所周知的变量名称选择某些缩写,例如 delete,project,configuration, etc. ?您如何选择简短但又好又易读的变量名?

这个问题可能不直接依赖于 Python,但由于不同的编程语言使用不同的变量名格式,我想我将此问题限制为 Python only

【问题讨论】:

  • 啊,naming-conventions...正如他们所说,计算机科学中的两个难题是缓存失效、命名和非一个错误;)
  • 为什么不使用标准的短格式,例如:del 表示删除,cnfg 表示配置等等?
  • @sukhbir 这就是问题所在。作为一个以前没有为任何其他项目工作过的新手,很难选择什么。例如,对于 PEP-8,我知道我应该使用像 name_variable 这样的变量,但我不知道为短变量或缩写选择什么。我的意思是有任何文件或任何标准吗?我找不到与此相关的任何内容。

标签: python syntax formatting naming-conventions


【解决方案1】:

pr_nm_del?你不妨让一只猫给它命名。我认为应该不惜一切代价避免使用缩写词,除了众所周知/显而易见的缩写词(如 cmets 中提到的 del,它甚至是语言关键字!)可以节省大量打字。

但这并不意味着标识符过于冗长。正如上下文对于理解自然语言中的语句很重要一样,标识符通常可以通过引用上下文来保持更短(并且同样易于理解)。在您的示例中,project_name 非常好 - 该过程已被称为delete_project,因此project_name 显然是指要删除的项目的名称。即使是 name 一个人也可以。无需通过附加 _to_be_deleted 再次声明。

【讨论】:

  • 如果你真的要给要删除的项目起个名字,为什么不叫它obsolete_project_name呢?
  • 我会选择doomed_project_name
【解决方案2】:

在您的示例中,您有一个名为 delete_project 的函数。想知道如何调用存储要删除的项目的变量?只是“项目”!

def delete_project(self, project):
    del self.projects[project]

简单。

变量名称不必是完全描述性的。上下文可以帮助我们在特定时间点如何理解特定名称。在讨论删除项目的功能时,无需说“这是要删除的项目”。

如果你发现函数名太长,他们可能做的太多了。如果您发现变量名变得太长,请考虑一下它们在当前上下文中的用途,看看是否可以隐含部分名称。

【讨论】:

    【解决方案3】:

    当您进行 OOP 时,这个问题会自行解决。主语(project, configuration)是类,动词(delete, etc)是方法名,即:

    class Workspace(object):
    
       def delete_project(self, project):
           log.info("Deleting", project.name)
           ...
    

    【讨论】:

      【解决方案4】:

      我认为长名称是可以接受的,只要它们是描述性的。使用好的编辑器/IDE,短名称不能节省打字,而长但描述性的名称可以节省阅读代码的时间。所以读名字的时间长度比名字的实际长度重要得多。

      至于你的例子,project_name_to_be_deleted 很好。如果你想缩短它,我建议使用project_name_to_del,因为deldelete 的著名缩写(你甚至可以在键盘上找到它)。并且将conf 用作configuration 也很流行。但不要走得更远。例如,proj2del 不是一个好主意。

      另外,对于内部/本地的事情,使用简短的描述性名称是可以的。

      【讨论】:

        【解决方案5】:

        很少有名称有“标准”缩写。你认为的“普通”或“标准”对于其他人来说是不一样的。 设置好名字所花费的时间是值得的,因为代码的阅读频率比编写的频率高得多。 举个例子,我见过 “配置” 缩写为 “配置” “cnfg” “cfg” “cnf” ...所以教训是 - 不要缩写,除非有一个非常知名的缩写!

        【讨论】:

          猜你喜欢
          • 2016-04-11
          • 1970-01-01
          • 2018-04-23
          • 1970-01-01
          • 1970-01-01
          • 2017-08-11
          • 1970-01-01
          • 1970-01-01
          • 2014-04-21
          相关资源
          最近更新 更多