Refactoring 썸네일형 리스트형 .net Winform 에서 코드 룩업하기 리펙토링 step4 Step4 Step3 문제점 콤보박스에 코드를 바인딩하는 부분은 나름 괜찮게 클래스로 빠져나간듯 하다. 다른 화면에서도 생성시 어떤 콤보박스가 어떤 코드를 참조하는지 데이터만 넘겨주면 바인딩은 앞으로 문제 없이 될 것 같다. 화면소스에서 바로 한가지 걸리는 것이 코드 데이터를 다루는 부분이 여전히 존재한다. Step3 해결 코드를 데이터를 다루는 부분을 CodeRepository라는 클래스로 빼내도록 하겠다. 이렇게 됨으로서 화면과 관련되지 않은 처리를 CodeRepository 클래스가 처리하도록 분리하였다. 추가된 클래스 및 화면소스 public class CodeDataRepository { private List codeDatas = new List(); public CodeDataReposito.. 더보기 .net Winform 에서 코드 룩업하기 리펙토링 step3 Step3 Step2 문제점 스텝2에서 코드를 바인딩해주는 기본적인 기능을 클래스로 축출하여 개별 Form화면에서 생성만 해주면 되는 방법으로 재사용성을 높였다. 하지만 아직 해결되지 않은 것이 하나 있는데, 단일 코드를 바인딩해주는 기능은 완성하였지만 만약 '구분1', '구분2'와 같이 두개의 코드를 바인딩해야되는데 '구분2'를 바인딩하는 컨트롤의 데이터가 '구분1'의 값에 따라서 달라지는 경우는 아직도 해결이 되지 않고 있다. Step2 해결 동적으로 객체가 생성되는 시점에는 '구분1'의 인스턴스가 무엇인지를 알길이 없기 때문에 ComboBoxCodeBinder가 컨트롤의 값도 리턴되는 구조로 만들고 다시 참조할 수 있도록 클래스를 더 변경을 하여 앞의 컨트롤의 데이터를 참조할 수 있는 구조로 변경해.. 더보기 .net Winform 에서 코드 룩업하기 리펙토링 step2 Step 2 Step1 문제점 단순히 콤보박스에 코드데이터를 바인딩하는 작업은 가능하지만, 다른 화면에서 다른 코드를 바인딩하고 싶을 경우 비슷한 내용의 이벤트 코드를 다시 작성해야된다. 프로그래밍에 있어서 비슷한 코드를 복사해서 붙여넣기 하는 경우는 가급적이면 하지 말아야 하는 행위이다. 코드를 복사해서 붙여넣을 경우 기존코드가 문제가 되거나 기능이 추가 변경될 경우에도 복사해서 붙여넣은 곳에 모두 변경을 해야 되는 상황이 온다. 더불어 상당히 많은 작업이 초례되고 그 작업이 다시 버그를 불러일으킬 가능성이 높아진다. Step1 해결 우선적으로 콤보박스에 진입이 일어나면 코드를 바인딩 하는 부분을 다른 화면에서도 재사용할 수 있도록 별도의 클래스로 빼어내도록 해보겠다. 코드의 바인딩을 담당하는 클래스 .. 더보기 .net Winform 에서 코드 룩업하기 리펙토링 step1 1. 스텝1 기본적인 기능 구현을 아래 코드로 나타내고자 한다. 코드데이터는 보통 데이터베이스에서 관리하는데 데이터베이스 연결없이 코드데이터 클래스로 대체를 하고자 한다. 실전에서도 데이터베이스에 불려나온 코드를 관리하는 쪽에서는 코드데이터 클래스를 그대로 사용하여 개발을 진행하였고 이 방식이 더 효율적이라고 생각한다. 코드데이터 클래스는 단순히 코드의 구분, 코드, 화면 텍스트값, 참조코드 구분값을 가지고 있는 데이터 클래스이다. public class CodeData { public string CodeDiv { get; set; } //코드구분 public string Code { get; set; } //코드 public string Caption { get; set; } //코드명 public .. 더보기 .net Winform 에서 코드 룩업하기 리펙토링 전제 실전에서 작성되던 코드를 리펙토링하여 클래스화 하고 라이브러리화하여 재사용성을 높이는 과정을 남겨본다. 실전에서는 닷넷기본 UI 컨트롤을 사용하지 않고 상용UI 컨트롤을 사용하기 때문에 바로 옮길 수 없어 닷넷기본 컨트롤을 이용하여 라이브러리화 하는 과정을 남긴다. 코드 데이터 UI 컨트롤에 바인딩하기 주어진 과제 닷넷 Winform 기반으로 개발을 할 떄 업무용에서 주로 사용되는 상황인 ComboBox에 코드를 바인딩하는 부분이 자주 사용된다. 이런 류의 콤보박스가 있고 '구분2'의 콤보박스는 '구분1'에 선택된 데이터와 연관되는 코드데이터만 불러와서 바인딩 해야되며, 조회시에는 콤보박스에 나오는 텍스트 데이터가 아닌 코드데이터를 가지고 어떤 작업에 쓰는 상황이 업무용 프로그램에서는 매우 빈번하게 발생.. 더보기 객체지향을 정복해야되는 이유 리펙토링이라는 주제와 사례를 본격적으로 다루기전에 기본적으로 알고 있어야 될 여러가지 지식 중 가장 중요하다고 생각되는 객체지향에 대해서 개인적인 소견을 다룹니다. 객체지향을 정복해야되는 이유 1. 소프트웨어 개발시 가장 많이 할애되는 시간 소프트웨어 개발 과정(단계) 소프트웨어 개발은 '분석 -> 설계 -> 구현 -> 테스트' 단계를 거치며 진행이 된다. 소프트웨어 개발에는 여러가지 방법론이 존재하는 가장 오래된 폭포수 개발 방법부터 애자일 개발 방법에 이르기까지 방법론적인 측면에서 문제점을 찾고 개선을 찾아서 발전및 적용 되어 왔다. 방법론이 나온 순서로 봤을 때 폭포수 모델이부터 애자일까지 극과 극을 달린다는 방식이라고 생각될 수 있다. 그리고 애자일은 폭포수방법론을 1도 차용하지 않는다고 말 할 .. 더보기 이전 1 2 다음