Considera il seguente programma della riga di comando manage-id
. Fa queste cose:
manage-id list (list all usernames and user-ids)
manage-id show <username> (shows username's id)
manage-id clear <username> (erases username's id)
manage-id set <username> <user-id> (sets usernames id)
manage-id find <string> (list usernames whose id contains <string>)
Quanto sopra è un modo per progettare l'interfaccia utente. Eccone un altro:
manage-id --action list
manage-id --action show --username <username>
manage-id --action clear --username <username>
manage-id --action set --username <username> --id <user-id>
manage-id --action find --search <string>
Il primo è un "progetto dell'argomento posizionale" e il secondo un "progetto dell'opzione della riga di comando".
Tendo a preferire la "progettazione di opzioni da riga di comando" per alcuni motivi:
- gli argomenti possono essere presentati in qualsiasi ordine
- i nomi delle opzioni sono auto-documentanti
- rimuove l'ambiguità sul ruolo dell'argomento (ad esempio, nei due comandi
manage-id show johndoe
emanage-id find john
, il secondo argomento riproduce ruoli diversi).
D'altra parte, la "progettazione di opzioni da riga di comando" utilizza "opzioni" che non sono realmente opzionali.
La mia domanda è questa: esiste una scelta di stile raccomandata (e ampiamente seguita) che preferisca uno di questi due stili rispetto agli altri per i programmi da riga di comando di Linux?