03-31-2014 01:19 PM
I'll toss in my two cents worth.
Strings- I use them if I want to use a generic queue utility (for things like command logging and priority queues) A consumer of string command needs a default case that tosses an error and its queue should not be named.
Enums- I use them for action engines or simple consumer QMHs the default is allways "Null" for my enum commands and "Close/Exit" will always be the greatest value. (a 127 will close just about anything) These queues I might name since they have a typedef the name can help keep me from using the wrong enum (e.g QMH "ActorA" in scope ProjectY may have a enum of type "ActorA cmd.ctl" on queue "Y ActorA Q". ActorA cmd.ctl is likely to be in a lvlib and "friendly" or "Private" to prevent use outside of the intended scope.
Either has advantages and disadvantages which is why I place use case requirements on my QMH's rather than require the use of one or the other.