2010-12-05 90 views
7

在一般情况下,我使用PEP-8中的变量标准命名。像:我们应该为python变量名使用哪种缩写?

delete_projects 
connect_server 

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

project_name_to_be_deleted 

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

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

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

+8

啊,'命名约定'......正如他们所说的那样,计算机科学中的两个难题是缓存失效,命名事件和错过的错误;) – delnan 2010-12-05 12:52:52

+0

为什么不使用标准简写形式,如:del删除,cnfg进行配置等等? – user225312 2010-12-05 12:55:16

回答

5

pr_nm_del?你可以让一只猫命名它。我相信应该不惜一切代价来避免缩写,除了知名/明显的缩写(如评论中提到的del--即使是一个甚至是语言关键字!),可以节省大量的输入。

但这并不意味着冗长的标识符。正如上下文对于理解自然语言中的语句很重要一样,通过引用上下文,标识符通常可以保持更短(并且可以理解)。在你的例子中,project_name是完全正常的 - 该过程已被称为delete_project,所以project_name显然是指要删除的项目的名称。即使只有name也可以。无需再次声明_to_be_deleted

0

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

至于你的例子,project_name_to_be_deleted是好的。如果你想缩短它,我会建议使用project_name_to_del,因为del是一个着名的delete的缩写(你甚至可以在键盘上找到它)。而使用conf作为configuration也很受欢迎。但不要走得更远。例如,proj2del不是一个好主意。

此外,对于内部/本地事物,使用短不太明显的名称也可以。

0

在你的例子中,你有一个叫做delete_project的函数。想知道要存储要删除的项目的变量是什么?只是'项目'!

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

简单。

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

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

1

这是一种当你在做OOP时自己解决的问题。主题(project, configuration)是类和动词(delete, etc)是方法名,即:

class Workspace(object): 

    def delete_project(self, project): 
     log.info("Deleting", project.name) 
     ... 
0

很少名具有“标准”的缩写。你认为“普通”或“标准”对别人来说不一样。 设定一个好名字所花费的时间投入很大,因为代码读取的次数比写入次数多得多。 作为一个例子,我已经看到了 “配置” 简称 “配置” “CNFG” “CFG” “CNF” ...这样的教训是 - 不要缩写,除非有一个非常它是众所周知的缩写!