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