One of the most common examples of where we can drop an imperative verb prefix on a method name is in testing.

Unless a framework — such as pytest — requires 'test', such a prefix serves no useful purpose. It qualifies as a noise word, simply repeated what we already know from annotations/attributes, context, etc.

Stepping away from the imperative mood frees up the name (and the developer) to focus on naming a test more in terms of intent and purpose than as a directed action.

@kevlin We had a convention (for a limited time) to start the test methods with "test_that" (we use pytest) as a trigger to describe what you are expecting rather than what you are testing. So "test_that_sum_is_commutative" rather than "test_plus". After a while we dropped the convention and started writing "test_sum_is_commutative". Still have those "that"s lying around some places though.

@Haskellelephant A naming practice I think I may originally have been responsible for creating! I still often advocate for getting into the habit of naming things propositionally when 'test' is a mandatory prefix, or — to be precise — to get out of the habit of flat, directive-based naming.

But once you're out of the old habit and the new one is natural, all is good 🥂