Общее правило, которому я следую, состоит в том, что если единственный метод, вызывающий doSomething
, это doSomethingElse
, то вполне нормально, что , а не , должны doSomething
быть частью объявленного частного интерфейса. Но как только второй метод использует doSomething
, я добавляю его в объявленный интерфейс.
Смысл этого в том, что пока метод вызывается только из одного места, нет оснований думать о нем как о модульном или повторно используемом коде. Вместо этого больше похоже, что метод существует только для того, чтобы привести в порядок реализацию вызывающего метода. По сути, метод на самом деле не сам по себе, поэтому нет смысла рассматривать его как метод интерфейса. Но как только второй метод выполняет тот же вызов, он демонстрирует, что код на самом деле можно использовать повторно и использовать не только в оригинальном контексте, но и в качестве полезной функции. Таким образом, в этот момент он становится объявленной частью частного интерфейса.