반응형

지금까지 작성한 코드의 라인이 벌써 1,000라인이 넘어 가고 있다. 

앞으로도 많은 기능들을 하나씩 하나씩 붙여 나갈 것인데, WinForm파일 인 WANIGrid.cs파일의 라인 수는 시간이 지날 수록 점점 더 커지게 될 것이다.

소스의 라인이 많아지면 가독성도 떨어지고 소스의 유지보수에도 많은 불편함이 따르게 된다.

하나의 WinForm파일인 WANIGrid.cs 파일 내에 사용자 UI에 관련되는 부분, 일반 Method, Event 처리 Method 등이 뒤섞여 있게 되고, 코드 라인이 길어지다 보면 아래 위로 스크롤해서 찾아 가는 것이 점점 불편하게 느껴지게 될 것이다.

애플리케이션 개발에 있어서 개발 완료가 끝이 아니라 개발 완료 이 후에 더 많은 일들이 있게 된다.

개발 완료 후 발생하는 여러 가지 오류 처리와 함께 사용자가 애플리케이션을 사용하면서 추가 개선 및 변경 요청 사항들을 접수받아 처리하는 것 또한 초기 개발하는 것 만큼이나 많은 노력을 요하게 된다.

이러한 일들을 보다 효율적으로 처리하기 위해서 유형별 기능별로 소스 코드를 분할해서 편리하게 관리할 수 있다면 일의 능률도 오르고 소스에 대한 가독성 또한 높일 수 있을 것이다.

잘 정리 정돈되지 않은 어마무시하게 긴 소스코드를 바라보며 막막함을 느끼지 않게되어 더 좋을 것이다.

 

WANIGrid 프로젝트 내의 WinForm인 WANIGrid.cs파일을 3가지 형태로 구분하고자 한다.

  • WANIGrid.cs - WANIGrid Control 내에서 사용하는 변수, 초기화, Property, 생성자 등 포함
  • WANIGrid.Event.cs - WANIGrid Control 내의 Event 처리 로직을 포함
  • WANIGrid.Method.cs - WANIGrid Control 내에서 사용되는 Method들을 포함

WANI Grid Project에서 마우스 우측 버튼을 클릭해서 [추가(D)] > [클래스(C)]를 선택해서 2개의 클래스 파일인 WANIGrid.Event.cs, WANIGrid.Method.cs 클래스 파일을 추가한다.

두 파일의 클래스 선언 시 클래스명을 WANIGrid로 변경한다.

public partial class WANIGrid

클래스 파일 추가 및 수정 후 Visual Studio를 종료한다.

 

다음에는 WANI Grid.csproj 파일을 편집기로 열어서 새롭게 추가된 WANIGrid.Event.cs, WANIGrid.Method.cs의 설정 값을 수정하자.

아래의 파란 색 부분을 변경하면 된다.

<Compile Include="WANIGrid.cs">

    <SubType>UserControl</SubType>

</Compile>

<Compile Include="WANIGrid.Designer.cs">

    <SubType>UserControl</SubType>

    <DependentUpon>WANIGrid.cs</DependentUpon>

</Compile>

<Compile Include="WANIGrid.Event.cs">

    <SubType>UserControl</SubType>

    <DependentUpon>WANIGrid.cs</DependentUpon>

</Compile>

<Compile Include="WANIGrid.Method.cs">

    <SubType>UserControl</SubType>

    <DependentUpon>WANIGrid.cs</DependentUpon>

</Compile>

 

Visual Studio를 실행해서 WANI Grid 솔루션 파일을 열면 아래와 같이 WANIGrid.cs 파일 아래에 WANIGrid.Event.cs, WANIGrid.Method.cs 파일 추가 되어져 있는 것을 알 수 있다.

[그림 18-1] 솔루션 탐색기

 

이 상태에서 각각의 영역에 맞게 기능들을 분배하면 된다.

소스를 총 3개의 파일로 분배를 하고 나면 소스를 관리하기가 좀 더 손쉬워 질 것이다.

WinForm에서 계속 소스의 라인이 늘어나는 문제가 개발자들 사이에서 많은 이슈가 되었고 가능한 기능별 또는 역할별로 파일을 쪼개서 사용하는 방법에 대해서 많은 논의가 있었던 것 같다.

그 중 하나의 방법으로 Partial Class를 이용한 WinForm의 소스 관리 방법을 적용해 보았다.

 

이렇게 주요 기능별로 쪼갠 결과 파일은 아래에서 다운 받아서 확인하면 된다.

WANI Grid_20190827.zip
0.41MB

반응형
반응형

실제 생성한 Form의 소스가 Form1.cs 라고 하자. 

해당 폼을 개발하면서 UI/Event/Biz. 로직 등을 개발하다보면 Form1.cs파일의 사이즈가 점점 커지게 되고 해당 소스를 유지보수 하기도 불편하게 된다.

이러한 문제를 피하기 위해서 Form1.cs파일에서는 폼과 직접 연관되는 UI 영역만 커버하고 각 컨트롤의 이벤트 처리하는 영역은 별도의 클래스를 만들어서 처리할 수 있게 된다.

이렇게 하면 소스 즉 클래스에 대한 책임과 권한을 명확하게 분리하고 개발 및 유지보수가 편리해진다.

이렇게 설정하기 위해서는 WinForm 소스가 있는 프로젝트 파일에 아래와 같이 설정을 하면 된다.

 

<Compile Include="Form1.cs">

    <SubType>Form</SubType>

</Compile>

<Compile Include="Form1.Designer.cs">

    <DependentUpon>Form1.cs</DependentUpon>

</Compile>

<Compile Include="Form1.Event.cs">

    <DependentUpon>Form1.cs</DependentUpon>

    <SubType>Form</SubType>

</Compile>

반응형

+ Recent posts