UPDATE
Сейчас я знаю лучше, и поэтому применил бы разделение командных запросов (CQS). CQS говорит, что метод должен либо изменять состояние, или возвращать результат, но не оба сразу.
В результате мой текущий стандарт:
Foo GetFoo(id); // Throws if Foo cannot be found for id
Foo FindFoo(id); // Returns null if the Foo cannot be found.
void CreateFoo(id[, args]); // Creates a Foo with supplied args.
СТАРЫЙ ПОСТ - ИГНОР
Часто я использую этот стандарт:
GetFoo(); // Always returns a Foo, so creates if there isn't one already.
FindFoo(); // Returns null if the Foo cannot be found.
Особенно полезно при доступе к данным, когда вы загружаете сотрудника или что-то на основе ключа, и он может существовать или не существовать.
Если быть точным - это документированный стандарт кодирования. Каждый, кто работает с базой кода, знает этот стандарт и реализует его таким же образом. Вот как мы можем избежать неприятностей с этими хорошими короткими именами, которые являются довольно общими.