C#에서 팀 만들기 폼 구축 - 레슨 12 설명 (Tim Corey)
이 기사에서는 Tim Corey의 "C# App Start To Finish Lesson 12 – Create Team Form Part 1"를 통해 C# 애플리케이션 개발을 더 깊게 살펴볼 것입니다. Tim은 실제 세계의 양식을 단계별로 구축하는 과정을 통해 복잡한 UI 작업을 더 작은, 관리 가능한 덩어리로 나누는 방법을 보여줍니다. 그의 접근 방식을 따름으로써, 당신은 깨끗한 패턴과 실용적 개발 전략을 사용하여 기능적인 Windows Forms 애플리케이션을 디자인하고 구현하는 방법에 대해 더 명확한 이해를 얻을 수 있습니다.
복잡성 분해하기
Tim은 개발자들이 복잡성에 압도되지 않는 것이 중요한 마인드셋이라고 강조하면서 시작합니다. 그는 양식이 처음에는 복잡하게 느껴질지 모르지만, 해결책은 더 작은 조각으로 나누는 것이라고 설명합니다. Tim은 관리 가능한 부분을 분리하게 되면 문제가 훨씬 해결하기 쉬워진다고 말합니다. 이 철학은 그의 교육 방식의 중심에 있으며, 초보자들이 개발 시 집중력과 자신감을 유지할 수 있도록 돕습니다.
Create Team Form 이해하기
Tim은 "Create Team" 양식을 보여주며 버튼, 리스트, 테이블 등 여러 UI 구성 요소가 포함되어 있다고 언급합니다. 그는 Add New Member 섹션이 본질적으로 자체 양식이며, 이전 수업에서 만든 "Create Prize" 양식과 유사하다고 지적합니다. 기능의 분리가 중요한 이유는 개발자가 전체 형태의 복잡성에 빠져들지 않고 한 섹션씩 구현할 수 있게 도와주기 때문입니다.
목적 명확히 하기: Add New Person
Tim은 "Add New Member" 섹션이 기술적으로 팀 구성원을 추가하는 것이 아니라 사람을 추가하는 것이라고 설명합니다. 데이터베이스에서는 people 테이블에 이름, 성, 이메일, 휴대폰 번호 같은 필드가 포함되어 있습니다. 팀 구성원은 단순히 사람 ID와 팀 ID로 표현됩니다. Tim은 기술적으로 사람을 추가하고 있지만, 양식의 목적에 맞기 때문에 "Add New Member"라고 부르는 것이 합리적이라고 언급합니다.
버튼 이벤트 만들기
Tim은 "Create Member" 버튼에 대한 버튼 이벤트를 만드는 방법을 시연합니다. 그는 버튼을 더블 클릭하거나 속성 패널을 사용하여 이벤트를 만들 수 있다고 설명합니다. 그는 또한 네이밍 컨벤션이 이벤트 이름에 어떻게 영향을 미치고, 일관된 네이밍이 혼란을 피하기 위해 왜 중요한지 설명합니다. Tim은 생성하기 전에 이벤트를 위해 이름을 지정해야 추가 수동 작업을 피한다고 강조합니다.
이벤트 내 로직
Tim은 버튼 이벤트가 수행해야 하는 단계를 개략적으로 설명합니다:
양식 유효성 검사
Person 모델 생성
사람을 데이터베이스 또는 텍스트 파일에 저장
- 양식 지우기
그는 이 워크플로가 이전의 "Create Prize" 양식과 유사하다고 비교하며 동일한 패턴이 적용됨을 보여줍니다. Tim은 이런 패턴을 재사용하는 것이 개발을 더 빠르고 신뢰할 수 있게 만드는 것이라고 설명합니다.
양식 유효성 검사
Tim은 ValidateForm()이라는 검증 메서드를 작성하고 네이밍 일관성이 중요한 이유를 설명합니다. 그는 검증이 필요에 따라 간단하거나 복잡할 수 있다고 제안합니다. 현재 Tim은 간단하게 유지하여 네 가지 필드 모두 텍스트를 포함해야 한다고 유지합니다. 그는 이메일 형식이나 전화번호 길이를 확인하는 등 검증을 나중에 개선할 수 있지만, 이번 강의에서는 기본 검증만으로도 진행하는 데 충분하다고 설명합니다.
Person 모델 생성 및 저장
Tim은 양식 필드에서 PersonModel을 생성하고 전역 연결로 전달하여 저장하는 방법을 보여줍니다. 그는 이 프로세스가 상 양식과 동일하다고 설명합니다: 검증 → 모델 생성 → 저장 → 지우기. Tim은 이런 패턴을 재사용하는 것이 개발을 더 빠르고 신뢰할 수 있게 만드는 것이라고 강조합니다.
CreatePerson 메서드 구현
Tim은 IDataConnection 인터페이스에 대해 새로운 메서드 CreatePerson(PersonModel model)에 필요한 인터페이스 업데이트를 소개합니다. 그는 이 메서드를 추가하면 인터페이스를 구현하는 기존 클래스 모두에서 컴파일 오류가 발생한다고 설명합니다. Tim은 이것이 모든 커넥터에 대해 새 메서드를 적절히 구현하도록 강제하기 때문에 좋은 것이라고 강조합니다.
SQL 저장 프로시저 생성
Tim은 SQL로 전환하여 저장 프로시저 spPeople_Insert를 생성합니다. 그는 FirstName, LastName, EmailAddress 및 CellPhoneNumber와 같은 매개 변수를 신중하게 매핑하여 정확한 데이터 유형과 크기를 보장합니다. Tim은 정확한 유형이 오류를 방지하고 데이터 무결성을 보장하기 위해 중요하다고 설명합니다.
그는 또한 SCOPE_IDENTITY()를 사용하여 새로 생성된 ID를 캡처하고 애플리케이션에 반환하는 방법을 설명합니다. 이 단계는 데이터베이스와 애플리케이션 모델에서 일관된 ID를 유지하는 데 중요합니다.
SQL 커넥터 테스트하기
Tim은 양식을 실행하고 사람을 데이터베이스에 삽입하여 SQL 커넥터를 테스트합니다. 그는 쿼리 창을 열고 dbo.People 테이블에 데이터가 올바르게 나타나는지 확인합니다. Tim은 자주 테스트하는 것이 초기에 문제를 발견하고 시스템이 예상대로 작동하는지 확인하는 데 중요하다고 언급합니다.
텍스트 커넥터 구현하기
Tim은 그런 다음 동일한 기능의 텍스트 커넥터 버전을 구현합니다. 그는 코드 구조가 유사하지만 이제 SQL 대신 CSV 파일을 사용한다고 설명합니다. 그는 PersonModels.csv라는 새로운 파일 상수를 만들고 CSV 데이터를 PersonModel 객체로 변환하는 메서드를 추가합니다.
Tim은 또한 데이터 형식화의 중요성과 콤마가 데이터 필드 내에 존재하면 문제가 될 수 있는 콤마로 구분된 값이 어떻게 문제를 일으킬 수 있는지 논의합니다. 그는 다른 구분자를 사용하거나 입력을 검증할 것을 제안합니다.
ConvertToPersonModels 메서드 생성
Tim은 CSV 줄을 PersonModel 객체로 구문 분석하기 위해 ConvertToPersonModels() 메서드를 작성합니다. 그는 줄을 분할하고 모델 속성에 값을 매핑하여 리스트에 추가하는 방법을 보여줍니다. Tim은 매핑 순서가 CSV 열 순서와 일치해야 함을 강조합니다.
CSV 파일에 저장
Tim은 PersonModel 객체의 리스트를 CSV 파일로 저장하는 SaveToPeopleFile() 메서드를 만듭니다. 그는 콤마로 구분된 값으로 문자열 라인을 만들고 파일에 쓰는 방법을 설명합니다. Tim은 올바른 파일 경로를 사용하는 것이 데이터를 올바르게 저장하는 데 중요함을 강조합니다.
최종 테스트 및 결과
Tim은 여러 구성원을 추가하고 CSV 파일이 올바르게 업데이트되었는지를 확인하여 텍스트 커넥터를 테스트합니다. 그는 ID가 올바르게 증가하고 모든 데이터 필드가 저장됨을 확인합니다. Tim은 이제 이 양식 부분에 대한 프로세스가 완료되었다고 언급합니다.
결론 및 다음 단계
Tim은 강의를 끝내면서 이 섹션이 이제 완료되었음을 설명합니다. 다음 단계는 팀 구성원 목록을 연결하고 팀 생성을 완료하는 것입니다. Tim은 이러한 프로세스가 시간이 지남에 따라 반복되고 재사용되는 패턴으로 인해 더 쉬워진다는 것과 이것이 시니어 개발자들이 빠르게 보이는 이유라고 상기시킵니다—그들은 검증된 패턴을 재사용합니다.

