Это переиздано из того, что я выложил на DDD Yahoo! группа.
При прочих равных вы пишете phone.dial (phoneNumber) или phoneNumber.dialOn (phone)? Имейте в виду возможные будущие требования (номера счетов в дополнение к номерам телефонов, калькуляторы в дополнение к телефонам).
Этот выбор иллюстрирует, как идиомы Информационного эксперта, Принципа единой ответственности и «Не спрашивай» противоречат друг другу.
phoneNumber.dialOn (phone) поддерживает информационный эксперт и «Не спрашивай», а phone.dial (phoneNumber) поддерживает принцип единой ответственности.
Если вы знакомы с работой Кена Пью в Prefactoring, то это Загадка электронной таблицы ; Вы добавляете строки или столбцы?