通常我使用PEP-8中规定的标准命名变量。像:
delete_projects
connect_server
然而,有时候我找不到任何好名字,这个名字只会扩展到很长的名字:
project_name_to_be_deleted
我可以使用pr_nm_del
,但这会使代码无法读取。我真的很痛苦为函数找到好的变量名。每当我开始编写新函数时,我只是花时间找到一个好的变量名。
是否有任何标准可以为众所周知的变量名称选择某些缩写,例如delete,project,configuration, etc.
?你如何选择简短但又好又可读的变量名?
这个问题可能不直接依赖于Python,但由于不同的编程语言使用不同的变量名称格式,我认为我将此问题限制为仅限Python 。
答案 0 :(得分:5)
pr_nm_del
?你不妨让一只猫给它命名。我认为应该不惜一切代价避免使用缩写,除了众所周知/明显的缩写(如del
,如评论中提到的那样 - 甚至是一个语言关键字!)可以节省大量的输入。
但这并不意味着过于冗长的标识符。正如上下文对于理解自然语言中的语句很重要一样,通过引用上下文,标识符通常可以保持更短(并且可以理解)。在您的示例中,project_name
完全正常 - 该过程已被称为delete_project
,因此project_name
显然是指要删除的项目的名称。即使只有name
也可能没问题。无需通过附加_to_be_deleted
再次声明。
答案 1 :(得分:1)
在您的示例中,您有一个名为delete_project的函数。想知道如何调用存储要删除的项目的变量?只是'项目'!
def delete_project(self, project):
del self.projects[project]
简单。
变量名称不必是完全描述性的。上下文可以为我们在特定时间点理解特定名称提供很多帮助。在讨论删除项目的函数时,无需说“这是要删除的项目”。
如果你发现功能名称太长,它们可能做得太多了。如果您发现变量名称变得太长,请考虑它们在当前上下文中的用途,并查看是否可以隐含部分名称。
答案 2 :(得分:1)
当你在进行OOP时,这是一个解决问题的问题。主语(project, configuration
)是类,动词(delete, etc
)是方法名称,即:
class Workspace(object):
def delete_project(self, project):
log.info("Deleting", project.name)
...
答案 3 :(得分:0)
我认为长名称是可以接受的,只要它们是描述性的。使用良好的编辑器/ IDE,短名称无法保存输入,而长而描述性的名称可以节省读取代码的时间。因此,名称的阅读时间长度比名称的实际长度重要得多。
至于你的例子,project_name_to_be_deleted
没问题。如果您想缩短它,我建议您使用project_name_to_del
,因为del
是delete
的众所周知的缩写(您甚至可以在键盘中找到它)。使用conf
作为configuration
也很受欢迎。但不要走得更远。例如,proj2del
不是一个好主意。
此外,对于内部/本地事物,使用简短的描述性名称也没关系。
答案 4 :(得分:0)
很少有名字有“标准”缩写。您认为“共同”或“标准”对于其他人来说并不相同。 设置一个好名字所花费的时间是很好的投入,因为代码的读取频率比写入的频率高得多。 举个例子,我见过 “组态” 缩写为 “配置” “CNFG” “CFG” “CNF” ...所以教训是 - 除非有一个众所周知的缩写,否则不要缩写!