Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 推荐的名称语序?_Python_Naming Conventions - Fatal编程技术网

Python 推荐的名称语序?

Python 推荐的名称语序?,python,naming-conventions,Python,Naming Conventions,在我看来,可以(至少)有两种方法来为变量、函数、类等创建名称 结构: history_clear() history_save_to_file() cache_remove_entry() cache_find() browser_window_url_trim() 人类可读: clear_history() save_history_to_file() remove_entry_from_cache() find_in_cache() check_for_updates() 首选的语序

在我看来,可以(至少)有两种方法来为变量、函数、类等创建名称

  • 结构:

    history_clear()
    history_save_to_file()
    cache_remove_entry()
    cache_find()
    browser_window_url_trim()
    
  • 人类可读:

    clear_history()
    save_history_to_file()
    remove_entry_from_cache()
    find_in_cache()
    check_for_updates()
    
  • 首选的语序是什么?有吗?
    我对编程很陌生,但我想从一开始就养成良好的编码习惯。我已经简单地阅读了样式指南,但在那里我没有找到答案。

    虽然这个问题很难客观地回答,但我认为您应该转到我最喜欢的python标准库模块,这是我的荣幸

    蒂姆·彼得斯的《蟒蛇禅》

    美胜于丑。显式比隐式好。 简单总比复杂好。复杂总比复杂好。 平的比嵌套的好。稀疏比密集好。可读性 计数。特殊情况不足以违反规则。 虽然实用胜过纯洁。错误永远不应该悄无声息地过去。 除非明确沉默。面对模棱两可的问题,拒绝 猜测的诱惑。应该有一个——最好只有一个 --显而易见的方法。虽然这种方式一开始可能并不明显,除非你是荷兰人。现在总比没有好。虽然从不经常 比现在好。如果执行情况难以解释, 这是个坏主意。如果实现很容易解释,那么它可能是一个 好主意。名称空间是一个非常好的主意——让我们做更多的工作 那些


    我相信可读性很重要。在这里是最相关的。毫无例外,代码是由其他人编写和维护的,而不是机器。正如你所建议的那样,它应该是“人类可读的”。

    我认为实际上没有任何优先顺序,你应该使用一种使工作更容易、更顺利的顺序。例如,如果有很多变量/类/函数的关键字为“history”和“cache”,那么使用结构化版本的可重复单词(如“history\u add”和“cache\u add”)可能会更好。但在任何其他情况下,可读版本都将是一个很好的解决方案。

    对于这一问题,我学到的方法很好地帮助了我,在从250K行的项目到学生练习的设计中,抽象数据类型发展为OOP

    • 宾语是名词或名词短语
    • 功能是动词或动词短语
    当我编程时,每一行代码都是一个命令,一个动词。我想把它写成动词。因此,我更喜欢您的选项2:
    clear\u history
    history\u clear
    更容易理解

    除此之外,如果你能很好地命名变量(对象),那么你的组织需求就会随之而来,因为对象会暗示你使用变量的方式。例如,您将编写以下内容

    symbiont_browser.trim_window(x_size, y_size)
    
    symbiont_browser.trim_window(x_size, y_size)