privateメソッドは不要

そのままの構造で全部publicにしろってわけじゃなく、大抵のprivateメソッドは別クラスに切り出して委譲できるか、もしくはstaticメソッドに切り出せるからそうしようって理屈です。とりあえずprivateな内部クラスとして定義するとか。結果、publicメソッドしか残らなければ上出来。
大抵のprivateメソッドは別の複数のpublicメソッドから呼ばれて、かつインスタンス変数の内容を更新する(つまりインスタンスの状態を変える)ことになるはず。そのprivateメソッドが更新する変数(の一部)を別のメソッドが更新できるようになると、あるインスタンス変数の状態を管理するのは誰なんだろうというのがとっても混乱する。privateメソッドに切り出したということは、そのprivateメソッドが更新するインスタンス変数はそのメソッドで共通的に管理したいという意図があるはずで、対象となるインスタンス変数を別のメソッドが独自に更新するのは困る。…ということは、別クラスのインスタンスとして管理すりゃいーじゃん的な発想です。
じゃぁ、インスタンス変数の内容を更新しないprivateメソッドはどうすべきか?それは素直にstaticメソッドにして、「私はインスタンス変数を更新しませんよ、ただの関数的な何かですよ」ってなことを全面に出すと、心配事が減る。ただ、同一クラス内で定義しているprivateなインスタンス変数は可視だから更新できないことはない。厳密には、別クラスのstaticメソッドとして定義すべきかな。privateはクラスプライベートであってオブジェクトプライベートじゃないってのが不自然に思う昨今です。
経験上、privateメソッドを多用するコードには、あんまりいい思い出はないです。インスタンスの状態が追いにくくなるし。凝集度が上がる、という副作用も期待できます。

…と、相変わらず偉そうに言うけど、所詮は経験則でしかないので、そんなに自信はありません。異論、反論歓迎。