본문 바로가기

프로그래밍/C#

[C#] 001. Windows Forms, Partial Class(부분 클래스) 사용하기

windows Form 메인 소스 코드 정리 필요

 

c# windows forms 응용프로그램 개발 중 메인 폼 소스 코드 사이즈가 커지면서 관리가 힘들어졌다.

아무래도 메인폼에 form control 내에서 오는 이벤트와 method 등 모든 소스 코드를 다 적다 보니

그 안에서 얽히고설켜서 더 커지기 전에 정리해야겠다는 생각이 들었다.

 

이전엔 사이즈가 크지 않은 프로젝트다 보니 주석을 통해 분리 관리하는 정말 단순한 방법을 사용했었다.

그렇게 해도 큰 문제도 없었다.

 

하지만 이번 프로젝트를 진행하면서 동일 방법으로 진행하다 보니 정리 안된 코드 때문에 힘들었다.

지금 정리하지 않으면 안 될 것 같았고, 차후 개발 완료 후 운영 시 유지관리에도 꼭 필요한 과정이라고 생각됐다.

 

그래서 여러 방법들을 찾던 중 많은 사람들이 Partial class(부분 클래스)를 이용하여 기능별, 역할별 소스 코드를

분리 관리한다는 사실을 알게 됐다. 그중 아래 링크 블로그의 글을 중점으로 참고하여 일을 진행해보았다.

 

 

https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/classes-and-structs/partial-classes-and-methods

 

Partial 클래스 및 메서드 - C# 프로그래밍 가이드

Partial 클래스 및 메서드(C# 프로그래밍 가이드)Partial Classes and Methods (C# Programming Guide) 이 문서의 내용 --> 클래스, 구조체, 인터페이스 또는 메서드의 정의를 둘 이상의 소스 파일에 분할할 수 있습니다.It is possible to split the definition of a class, a struct, an interface or a method over two or more source

docs.microsoft.com

 

https://uniworks.tistory.com/26

 

18. WinForm 소스 파일을 부분클래스(Partial Class)로 분할하기

지금까지 작성한 코드의 라인이 벌써 1,000라인이 넘어 가고 있다. 앞으로도 많은 기능들을 하나씩 하나씩 붙여 나갈 것인데, WinForm파일 인 WANIGrid.cs파일의 라인 수는 시간이 지날 수록 점점 더 커지게 될 것..

uniworks.tistory.com

 

해결 과정

 

1. 어떤 기준으로 소스 코드를 분리 정돈할 것인가.

프로그램에서 실행되는 기능 크게 3가지로 정하여 분리

- 디바이스 설정 변경 : MainForm.BtnSetting.cs

- 시뮬레이션 : MainForm.BtnSimulation.cs

- 모니터링 : MainForm.BtnMonitoring.cs

 

2. partial class 적용

 1) 클래스 추가

     [프로젝트 파일] - 우클릭 - 추가 - 클래스 - 하단 이름 작성 (메인 폼 Name. 원하는 Name.cs)

 

 

 2) 추가한 클래스에 메인 폼 클래스명으로 선언 -  Visual Studio 종료

 

 

 3) 편집기 사용하여 프로젝트.csproj 열어 추가한 클래스 설정값 수정

 

<Compile Include="MainForm.BtnMonitoring.cs">
      <SubType>Form</SubType>
      <DependentUpon>MainForm.cs</DependentUpon>
    </Compile>
    <Compile Include="MainForm.BtnSetting.cs">
      <SubType>Form</SubType>
	  <DependentUpon>MainForm.cs</DependentUpon>
    </Compile>
    <Compile Include="MainForm.BtnSimulation.cs">
      <SubType>Form</SubType>
      <DependentUpon>MainForm.cs</DependentUpon>
    </Compile>

 

 

3. 적용 확인

다시 Visual Studio 프로젝트 실행시키면 솔루션 탐색기에 추가된 클래스 확인

 

 

 

메인 폼에서 모두 처리하는 것이 아닌 역할별로 구분한 클래스에 정리하니 한결 메인 폼이 깔끔해진 느낌이다.

개발 초기에 이러한 정리가 꼭 이루어져야겠다는 생각을 하였고 개발 중에나 개발 완료 후 유지보수 시에나 

문제 발생 시 관련 클래스에 접근하여 관리가 가능하여 앞으로 관리가 쉬워질 것 같다.

 

 

c# Windows Forms, Partial Class(부분 클래스) 사용하여 메인 소스코드 분할하기 완료