大学を卒業したばかりで、結合を減らす必要があるコードに出くわしています。しかし、私はすべての概念を完全には理解していないので、簡単な例を参考にしてください。まず始めに、name という 1 つのフィールドを持つ person クラスを用意しました。そのクラス内にテキストを連結するメソッドがあります。
これはばかげた例であることはわかっています。ほとんどの人は、このような単純な状況で結合を減らすことを考えることはありませんが、コードと概念を一緒に完全に理解するのに役立つ単純な例だけが必要です.
メイン ウィンドウの背後にあるコードに、テキスト ボックスとボタンを配置しました。ウィンドウが読み込まれると、person x name フィールドの現在の値が表示されます。ボタンがクリックされると、x.PersonAddText メソッドが呼び出されます。現在、この例では結合が 8 で計算されています。ボタン クリック イベントは 3、ウィンドウ ロード イベントは 3 です。
この例を使用して、どちらかまたは両方をこれよりも少なくする方法はありますか?
以下はすべての私のコードです:
私の人物クラス:
public class Person
{
//Fields
private string name;
//Properties
public string Name
{
get { return name; }
set { name = value; }
}
//Constructors
public Person()
{
name = "joe";
}
//Methods
public string PersonAddText(string text)
{
return name += " - " + text;
}
//Interfaces (or additional code below here please to aid understanding)
}
私のコードビハインド:
Person x = new Person();
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
txtname.Text = x.Name;
}
private void button1_Click(object sender, RoutedEventArgs e)
{
txtname.Text = x.PersonAddText(txtname.Text);
txtname.Text = x.Name;
}
私の単純な XAML:
<Grid>
<TextBox Name="txtname" Margin="12,12,12,0" Height="23" VerticalAlignment="Top" />
<Button Content="Add Text" Margin="12,41,12,0" Name="button1" VerticalAlignment="Top" Click="button1_Click" />
</Grid>
これを説明するインターネット上のチュートリアルを理解するのに非常に苦労しています。私が見たところ、これを行うには 3 つの方法があります (可能であれば、上記のコードを 3 つすべての例に変換するとよいでしょう)。
- サービスロケーター
- 依存性注入
- 制御の反転 (IoC)
私が読んだ内容を説明する記事は優れていますが、データベース接続文字列で VB と ASP.Net を使用しているため、例は私には関係ありません。これは私が必要としているものとは正反対であり、概念を学びながらコードを翻訳する方法を考えたくないし、それを関連するものに適用する方法についても考えたくありません。例は良いものですが、多すぎます。追加の助けをいただければ幸いです。
編集履歴: スペルを修正しました。私の質問を明確にするために以下を追加しました:
カップリングと凝集の背後にある理論と、一方を減らして他方を増やす必要がある理由を理解しています。しかし、大学で例をコーディングする必要はありませんでした。また、大学ではカバーされていませんが、インターフェイスは理解しています。ただし、結合を減らすためにそれらを使用する方法がわかりません。
上記で参照した記事へのリンクを追加しました。
編集2:これまでのところ、私が得たものは次のとおりです。
public interface IPerson
{
string Name { get; set; }
string PersonAddText(string text);
}
public class Person : IPerson
{
//The code from the person class above
}
メインウィンドウのコードビハインドでこれを使用するにはどうすればよいですか? 交換した方がいいと思います
Person x = new Person();
と
IPerson x = new Person();
これは正しいですか、もしそうなら、私がしなければならないことは他にありますか。私が尋ねる理由は、Visual Studio によって報告されたコード カップリングの数値が減少していないことをまだ確認していないためです (実際には、メイン ウィンドウのコード ビハインドで 1 増加します)。