Не существует согласованных определений терминов «опция», «аргумент» и «флаг», и в мире разработки программного обеспечения нет централизованного органа, который мог бы обеспечить их использование. Это происходит с большой терминологией: после 30 с лишним лет использования слова «каталог», мне теперь приходится иметь дело с людьми, использующими слово «папка», которые были сбиты с толку новичками Microsoft.
Существуют разные способы достижения согласованных определений терминов в программировании. В случае «аргумента» / «опции» / «флага» канонические руководства и учебные пособия для языков программирования помогли обеспечить использование, как и термины, используемые в общих библиотеках.
Например, вещи, которые вы помещаете в командную строку после команды, часто называют «аргументами» команды, по аналогии с аргументами вызова функции , и это, вероятно, частично потому, что они называются «аргументами» в руководстве по C ( отсюда argc
и argv
). Библиотека argparse
Python также помогает применять термин «аргумент». Однако я также видел, что их называют «параметрами».
Термин «опция» происходит от «необязательного», что означает, что они могут быть опущены. Библиотека getopt
C является одним из употреблений этого термина. Но есть прецедент для «опций», которые на самом деле не являются необязательными: например, в argparse
руководстве говорится, что можно создать «обязательную опцию» (хотя в нем также говорится, что это «обычно считается плохой формой»). Варианты часто предшествуют один ( -
) или двойной ( --
с длинной опцией) тир, но есть хорошо известные команды , которые не требуют или обеспечить использование тира для опций (например, tar
, ps
, и dd
). Опция сама может принимать аргумент (например, -w80
и --color=always
) или иногда несколько аргументов.
«Флаги», по моему опыту, такие же, как параметры, но обычно не принимают аргументы сами по себе и по сути представляют собой булевы переключатели.
В более широком смысле, поскольку у каждого программиста есть возможность попытаться найти какой-то стандартный способ выполнения задач и присвоения имен, но также можно изобретать колесо без особых дополнительных затрат, присвоение имен никогда не будет последовательным. И как только вы задокументируете свой код, и станет ясно, какое новое значение вы придаете этим словам, приводя примеры, эти имена и значения могут просто придерживаться, если будет достаточно людей, которые подберут их из вашего кода.