전체 글 썸네일형 리스트형 코드의 당위성 코드의 당위성 1. 당위성 회사내 후배개발자들에게 코딩관련 조언을 할때 자주하는 쓰는 단어가 '당위성'이다. '당(當) : 당연하다. 마주하다. 해당의, ...' '위(爲) : 하다. 되다, 위하다.' '성(性) : 성품, 성질' '당위성'란 당연히 가저야할 성질이라고 말할 수 있다. 2. 왜? 유명한 라이브러리 코드랑 내 코드는 뭔가 다를까? 프로그래밍에서도 당위성이 매우 중요하다는 사실은 OOP를 어느정도 이해하고 클래스와 클래스를 넘나들며 라이브러리 코드를 작성할 때 즘 감이 좀 오기 시작했다. 내가 반복작업하는 일들을 객체지향을 이용하니 수월하게 라이브러리화 할 수 있었고 그것을 반복 사용하여 프로그래밍을 하니 정말 효과가 탁월하였다. 특히 SI 프로젝트 프리렌서를 하러 가면 대한민구의 대다수 선.. 더보기 프로그래밍 실력에 대한 단상 프로그래밍에서 실력이란? 1. 항상 거론되는 단어 '실력' 소프트웨어 엔지니어 세상에서는 스포츠 경기에서나 많이 쓸만한 '실력'이라는 단어를 많이 거론한다. '실력' 향상을 위해서는 연봉의 일부라도 포기할 수 있다. '실력'향샹을 위해서 무엇을 해야될까요? 저 사람의 '실력'은 어느정도 입니까? 라는 등의 '실력'과 관련된 이야기는 소프트웨어 엔지니어들에게는 항상 같이 동반되는 단어이다. 소프트웨어 개발자들은 흡사 무림 RPG 게임속의 캐릭터와 같은 모습을 가지고 있다. RPG 게임을 보면 상대 캐릭터의 레벨이 머리위에 꼭지처럼 달려서 표시가 된다. 그러면서 나보다 높은 레벨의 사람에게 PK를 거는 일은 하지 않는다. 때로는 나보다 나약한 레벨로 보이는 캐릭터에게는 무례하게 굴기도 한다. 소프트웨어 개발.. 더보기 스프링은 왜 어려운가? 스프링은 왜 어려운가? 대한민국은 자바로 대동단결이 되어있다. 국가에서 발주하는 프로젝트가 모두 전자정부프레임워크라는 것을 사용하게 되어있고 전자정부 프레임워크 내에 중추적인 역활을 스프링이 하고 있기 때문에 전자정부프레임워크를 한다는 것은 스프링 프레임워크를 사용한다는 것이 된다. 개인적으로 국가의 입장에서는 꾀나 성공한 사업이라고 생각한다. 이전까지는 개발사마다 국가의 SI 사업에 각자의 기술 각자의 소스를 가지고 와서 개발을 하였기 때문에 어찌보면 프로젝트를 하고 난 뒤 국가기관이 개발사에 락인이 되어 주객이 전도되는 상황이 발생하는 경우가 빈번하였다고 한다. 하지만 전자정부프레임워크 기반으로 모든 개발을 진행하게 되니 어찌되었든 소스의 큰 틀과 구조는 같은 상황이 생기게 되었고 그런 락인 효과에서.. 더보기 .net Winform 에서 코드 룩업하기 리펙토링 step6 Step6 편의사항 개선 C# 문법에는 확장메서드라는 매우 유용한 문법이 존재한다. 어떠한 객체의 기능을 상속이 아닌 방법으로 확장하는 방식이다. ComboBox에 BindCode라는 메서드가 존재한다면 콤보박스가 코드를 바인딩할 수 있다고 추정할 수 있다. 소스코드의 모양에서 훨씬 더 이해하기 쉬운 코드를 작성할 수 있다. public static class ComboBoxExtensionBindingCode { public static ICodeBind BindCode(this ComboBox comboBox, IEnumerable codeDatas) { return new ComboBoxCodeBinder(comboBox, codeDatas); } public static ICodeBind Bind.. 더보기 .net Winform 에서 코드 룩업하기 리펙토링 step5 Step5 스텝4 문제점 소스상으로 본다면 클래스로 역활을 분리하고 매울 깔끔한 소스의 모습이 유지가 되고 있다. 그리고 코드바인딩은 잘이루어지고 있으며, 각 화면에서 코드를 바인딩 하는 부분이 매우 손쉽게 불러다 쓸 수 있을 정도가 되고 있다. 하지만 ComboBoxCodeBinder 클래스자체는 문제를 해결을 했을지 몰라도 조금만 변화가 필요할 경우 ComboBoxCodeBinder는 엄청난 변경을 수반해야되는 상황에 내 몰리게 된다. 만약 코드를 바인딩하는 모습이 콤보가 아니라 에디트 박스 두개면 어떻게 할 것인가? 이와 같은 상황이 온다면 에디트 박스 두개에 바인딩 처리를 담당하는 클래스를 만들어야 할 것이다. 이부분은 스펙이 변경되었으니 그렇다고 치더라도. '구분1' 의 값을 참조하는 '구분2'.. 더보기 .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 해결 우선적으로 콤보박스에 진입이 일어나면 코드를 바인딩 하는 부분을 다른 화면에서도 재사용할 수 있도록 별도의 클래스로 빼어내도록 해보겠다. 코드의 바인딩을 담당하는 클래스 .. 더보기 이전 1 2 3 4 5 6 다음