naming a function that exhibits "set if not equal" behavior

Posted by Chris Sears on Stack Overflow See other posts from Stack Overflow or by Chris Sears
Published on 2011-01-06T00:10:10Z Indexed on 2011/01/06 0:54 UTC
Read the original article Hit count: 164

This might be an odd question, but I'm looking for a word to use in a function name. I'm normally good at coming up with succinct, meaningful function names, but this one has me stumped so I thought I'd appeal for help.

The function will take some desired state as an argument and compare it to the current state. If no change is needed, the function will exit normally without doing anything. Otherwise, the function will take some action to achieve the desired state.

For example, if wanted to make sure the front door was closed, i might say:

my_house.<something>_front_door('closed')

What word or term should use in place of the something? I'd like it to be short, readable, and minimize the astonishment factor.

A couple clarifying points...

I would want someone calling the function to intuitively know they didn't need to wrap the function an 'if' that checks the current state. For example, this would be bad:

if my_house.front_door_is_open():
    my_house.<something>_front_door('closed')

Also, they should know that the function won't throw an exception if the desired state matches the current state. So this should never happen:

try:
    my_house.<something>_front_door('closed')
except DoorWasAlreadyClosedException:
    pass

Here are some options I've considered:

my_house.set_front_door('closed')
my_house.setne_front_door('closed') # ne=not equal, from the setne x86 instruction
my_house.ensure_front_door('closed')
my_house.configure_front_door('closed')
my_house.update_front_door('closed')
my_house.make_front_door('closed')
my_house.remediate_front_door('closed')

And I'm open to other forms, but most I've thought of don't improve readability. Such as...

my_house.ensure_front_door_is('closed')
my_house.conditionally_update_front_door('closed')
my_house.change_front_door_if_needed('closed')

Thanks for any input!

© Stack Overflow or respective owner

Related posts about naming-conventions

Related posts about variable-naming