我有以下代码行:
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)
但后者会降低新读者的阅读能力。
哪种方法是最通用的而不会失去可读性?你知道吗
另外,没有专门用于格式化命令行字符串的代码约定。至少,PEP 8在这件事上什么也没说。你知道吗
但是,下面的字符串
'/usr/bin/msgabc -A30 before "/etc/conf/help.txt" &'
是hard-coded字符串,或所谓的“magic string”。这些字符串可能会引起一些问题。有关讨论,请参见"What is wrong with magic strings?"。你知道吗所以,最好的做法是使它保持不变。而且不需要将其拆分为子字符串并使所有子字符串都保持常量。这样做对您的特定情况没有任何好处,只会损害可读性。你知道吗
不过,有些人认为,如果只遇到一次硬编码字符串,则不必将其设置为常量,您可以保持原样:Are hard-coded STRINGS ever acceptable?
相关问题 更多 >
编程相关推荐