6.20.1.3 What are positional arguments for?
In case it wasn't clear from the above example: positional arguments are for those pieces
of information that your program absolutely, positively requires to run.
A good user interface should have as few absolute requirements as possible. If your program
requires 17 distinct pieces of information in order to run successfully, it doesn't much
matter how you get that information from the user--most people will give up and walk
away before they successfully run the program. This applies whether the user interface is a
command-line, a configuration file, a GUI, or whatever: if you make that many demands on your
users, most of them will just give up.
In short, try to minimize the amount of information that users are absolutely required to
supply--use sensible defaults whenever possible. Of course, you also want to make your
programs reasonably flexible. That's what options are for. Again, it doesn't matter if they
are entries in a config file, checkboxes in the ``Preferences'' dialog of a GUI, or
command-line options--the more options you implement, the more flexible your program is, and
the more complicated its implementation becomes. It's quite easy to overwhelm users (and
yourself!) with too much flexibility, so be careful there.
|