Step6
편의사항 개선
C# 문법에는 확장메서드라는 매우 유용한 문법이 존재한다. 어떠한 객체의 기능을 상속이 아닌 방법으로 확장하는 방식이다. ComboBox에 BindCode라는 메서드가 존재한다면 콤보박스가 코드를 바인딩할 수 있다고 추정할 수 있다. 소스코드의 모양에서 훨씬 더 이해하기 쉬운 코드를 작성할 수 있다.
public static class ComboBoxExtensionBindingCode
{
public static ICodeBind BindCode(this ComboBox comboBox, IEnumerable<CodeData> codeDatas)
{
return new ComboBoxCodeBinder(comboBox, codeDatas);
}
public static ICodeBind BindCode(this ComboBox comboBox, IEnumerable<CodeData> codeDatas, ICodeBind refCodeBind)
{
return new ComboBoxCodeBinder(comboBox, codeDatas, refCodeBind);
}
}
public partial class Form1 : Form
{
private ICodeBind comboBoxCodeBinder1;
private ICodeBind comboBoxCodeBinder2;
private CodeDataRepository codeDataRepository;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.codeDataRepository = new CodeDataRepository();
comboBoxCodeBinder1 = comboBox1.BindCode(this.codeDataRepository.GetCodeDatas("01"));
comboBoxCodeBinder2 = comboBox2.BindCode(this.codeDataRepository.GetCodeDatas("02"), comboBoxCodeBinder1);
button1.Click += new EventHandler(Event_ClickButton);
}
private void Event_ClickButton(object sender, EventArgs e)
{
string combo1Value = this.comboBoxCodeBinder1.GetCode();
string combo2Value = this.comboBoxCodeBinder2.GetCode();
//something...
}
}
확장 메서드의 사용법은 인터넷에 검색해보면 많이 나와있다. 확장메서드를 이용하게 되면 읽기 쉬운코드와 개발자가 편하게 쓸 수 있는 코드로 확장하기가 매우 쉬워진다. 필히 학습하여 익혀둘 필요성이 높다고 볼 수 있다.
확장메서드를 만들어 쓰게 되면 코딩시에 코드완성창에서 아래와 같은 모습을 볼 수 있다. 메서드의 아이콘이 조금 특이하게 일반 메서드모양과 같은데 옆에 화살표가 표기되어있다.
'Refactoring' 카테고리의 다른 글
인터페이스에 대한 단상. (0) | 2021.11.01 |
---|---|
코드의 당위성 (0) | 2021.10.13 |
.net Winform 에서 코드 룩업하기 리펙토링 step5 (0) | 2021.10.08 |
.net Winform 에서 코드 룩업하기 리펙토링 step4 (0) | 2021.10.08 |
.net Winform 에서 코드 룩업하기 리펙토링 step3 (0) | 2021.10.08 |