Open
Description
I'm tempted to create a function that does different things when the switch parameter is missing, true, and false.
Using the 3 states cuts down on the number of switch parameters, and sometimes makes the function easier to understand, but I don't know how widely this practice is accepted by the community.
Example
For an example of when a 2-state switch parameter is misleading, look at Get-ChildItem -File -Directory.
#list all - ok
Get-ChildItem
#list directories - ok
Get-ChildItem -Directory
#list files - ok
Get-ChildItem -File
#list directories - ok
Get-ChildItem -File:$false -Directory
#list files - ok
Get-ChildItem -File -Directory:$false
So far so good, but look at this.
#list all - not intuitive
Get-ChildItem -Directory:$false
#list all - not intuitive
Get-ChildItem -File:$false
#list nothing! - very surprising
Get-ChildItem -File -Directory
Using 3 states for this is much simpler for the script writer. It may be easier for the user too.
#list all
Get-ChildItem
#list directories
Get-ChildItem -Attributes D
#list files
Get-ChildItem -Attributes !D
#there is no attribute for files
Question
So, would it be okay to use 3 states for switch parameters like the -Directory switch for Get-ChildItem?