格式化命令行字符串的代码惯例是什么?

2024-10-02 02:24:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码行:

run_command('/usr/bin/msgabc -A30 --before "/etc/conf/help.txt" &')

我想通过使用常量以“正确的方式”编写它,使它更通用。
我尝试将其转换为以下代码:

import os
MSGABC_PATH = "/usr/bin"
MSGABC_BINARY = "msgabc"
MSGABC_COMMANDLINE_ARGS = "-A30 --before \"/etc/conf/help.txt\""

run_command("%s %s &" % (os.path.join(MSGABC_PATH, MSGABC_BINARY), MSGABC_COMMANDLINE_ARGS)

但后者会降低新读者的阅读能力。
哪种方法是最通用的而不会失去可读性?你知道吗


Tags: pathrun代码txtbinosusrconf
1条回答
网友
1楼 · 发布于 2024-10-02 02:24:25

另外,没有专门用于格式化命令行字符串的代码约定。至少,PEP 8在这件事上什么也没说。你知道吗

但是,下面的字符串'/usr/bin/msgabc -A30 before "/etc/conf/help.txt" &'hard-coded字符串,或所谓的“magic string”。这些字符串可能会引起一些问题。有关讨论,请参见"What is wrong with magic strings?"。你知道吗

所以,最好的做法是使它保持不变。而且不需要将其拆分为子字符串并使所有子字符串都保持常量。这样做对您的特定情况没有任何好处,只会损害可读性。你知道吗

MSGABC_COMMAND = '/usr/bin/msgabc -A30  before "/etc/conf/help.txt" &'

run_command(MSGABC_COMMAND)

不过,有些人认为,如果只遇到一次硬编码字符串,则不必将其设置为常量,您可以保持原样:Are hard-coded STRINGS ever acceptable?

相关问题 更多 >

    热门问题