Каковы кодовые соглашения для форматирования строк командной строки? - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть следующая строка кода:

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)

Но последнее делает его менее читаемым для нового читателя.
Какой метод будет наиболее универсальным без потери читабельности?

1 Ответ

0 голосов
/ 12 декабря 2018

AFAIK, нет никаких соглашений по коду, специально предназначенных для форматирования строк командной строки. По крайней мере, PEP 8 ничего не говорит по этому вопросу.

Хотя следующая строка '/usr/bin/msgabc -A30 --before "/etc/conf/help.txt" &' является жестко закодированной строкой или так называемой " магической строкой ". И эти строки могут вызвать некоторые проблемы. См. «Что не так с волшебными строками?» для обсуждения.

Итак, лучший способ действий - сделать его постоянным. И нет необходимости разбивать его на подстроки и делать их все константами. Это не дает никаких преимуществ в вашем конкретном случае и только ухудшает читабельность.

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

run_command(MSGABC_COMMAND)

Хотя некоторые люди думают, что если жестко запрограммированная строка встречается только один раз, нет необходимости делать ее постоянной, и вы можете оставить ее такой, как есть: Приемлемы ли жестко запрограммированные строки когда-либо?

...