私は最近、Robert C. Martin (別名 Uncle Bob) の本を非常に熱心に読んでいます。彼が話していることの多くは、私にとって本当に命の恩人であることがわかりました (関数のサイズが小さい、物事の非常にわかりやすい名前など)。
まだ解決できていない問題の 1 つは、コードの結合です。私が何度も抱えている問題の 1 つは、たとえば配列をラップするようなオブジェクトを作成することです。あるクラスでいくつかの作業を行いますが、別のクラスで作業を行うには別のクラスを呼び出す必要があります。同じデータを 3 ~ 4 レベルの深さまで渡していますが、このオブジェクトが渡されるすべての場所を把握するのは難しいため、意味がないように思われます。私にはたくさんの依存関係があります。これは良い習慣ではないようです。
誰かがこれに対処するより良い方法を知っているかどうか疑問に思っていました.Bobのアドバイスは(おそらく私が誤解しているのですが)、より多くのクラスを作成する必要があるため、状況を悪化させているようです. ありがとうございます。
編集:実世界の例をリクエストする(そうでなければ、それを理解するのは難しいことに完全に同意します):
class ChartProgram () {
int lastItems [];
void main () {
lastItems = getLast10ItemsSold();
Chart myChart = new Chart(lastItems);
}
}
class Chart () {
int lastItems[];
Chart(int lastItems[]) {
this.lastItems = lastItems;
ChartCalulations cc = new ChartCalculations(this.lastItems);
this.lastItems = cc.getAverage();
}
class ChartCalculations {
int lastItems[];
ChartCalculations (int lastItems[]){
this.lastItems = lastItems;
// Okay so at this point I have had to forward this value 3 times and this is
// a simple example. It just seems to make the code very brittle
}
getAverage() {
// do stuff here
}
}