앱 로직 계획 - Tim Corey의 접근 방식에 대한 깊은 탐사
팀 코리는 그의 C# 애플리케이션 시작부터 끝까지 시리즈에서 애플리케이션을 만드는 것이 단지 코드를 작성하는 것만이 아니라고 설명한다. 진짜 도전은 앱 논리를 계획하는 데 있다 — 애플리케이션의 다양한 부분이 어떻게 상호작용하고, 소통하며, 화면과 구성 요소 간 데이터를 이동할지에 대한 것이다. Logic Planning수업 05에서 팀은 논리 계획에 초점을 맞추며, 애플리케이션이 전체적으로 어떻게 작동할 것인지 결정하는 단계라고 강조한다.
그는 우리가 지금까지 이 과정에서 범위 요구 사항을 검토하고, 전체 구조를 구축하고, 데이터 백엔드를 설계하고, 프런트 엔드를 그려 나간 것이라고 상기시킨다. 이제 팀은 모든 것을 논리를 통해 연결하는 것이 다음 단계라고 말한다.
팀은 이 강의에서 아직 코드로 들어가지 않을 것이라고 명확히 한다. 그 대신 그는 글로벌 아이디어, 큰 그림, 애플리케이션의 전반적인 논리를 다루고 싶어 한다. 그는 종이에 메모를 작성하고 화살표로 각 양식과 버튼이 어떻게 작동해야 하는지를 도식화하도록 격려하며, 이는 전문 개발 환경에서 비즈니스 프로세스를 도식화하는 것과 유사하다. 이 계획은 코딩으로 이동하기 전에 앱 논리가 명확해지도록 도와준다.
논리 계획이 중요한 이유
팀은 양식을 연결하는 것이 애플리케이션 논리의 주요 부분이라고 진술하는 것으로 시작한다. 양식이 올바르게 연결되면 나머지 작업은 보통 더 작다. 논리 계획 과정이 애플리케이션이 지원해야 하는 기능, 프로세스, 제어를 이해하도록 도와준다고 설명한다.
팀은 자신이 이것을 종이에 작성하고 각 구성 요소가 무엇을 해야 하는지를 기록하고 화살표로 연결할 것이라고 말한다. 클래스가 화면에서 작업하고 있지만, 그는 각 양식을 통해 걸으며 각 부분의 논리를 설명할 계획이다.
대회 생성 양식 논리
팀은 더 간단한 양식 중 하나인 대회 생성 양식으로 시작한다. 각 버튼의 논리와 그것들이 어떻게 협력해야 하는지를 설명한다.
새로운 팀 생성 버튼
팀은 새로운 팀 생성 버튼이 팀 생성 양식을 연다고 설명한다. 팀이 생성된 후 새로운 양식이 닫히고 생성된 팀 데이터가 대회 생성 양식으로 반환된다. 팀은 팀/플레이어 목록 상자에 나타나야 하며, 이는 팀 생성 양식에서 호출 가능한 메서드를 생성하여 이루어진다.
팀은 또한 폼이 서로 직접 알지 않아도 상호작용할 수 있도록 인터페이스를 사용하는 개념을 소개하고 인터페이스가 어떻게 이를 가능하게 하는지 설명한다. 이는 비즈니스 논리와 소프트웨어 아키텍처가 구성 요소 간의 품질, 무결성, 깔끔한 상호작용을 유지하면서 협력하는 전형적인 예이다.
팀 추가 버튼
팀은 팀 추가 버튼이 직관적이라고 설명한다. 드롭다운에서 선택된 항목이 어떤 것인지 확인하고, 해당 팀을 대회 목록에 추가한 다음 드롭다운에서 제거하고 두 목록을 새로 고친다. 이 논리는 사용자의 선택이 UI와 기본 데이터에 올바르게 반영되도록 보장한다.
상품 생성 버튼
팀은 상품 생성 버튼이 새로운 팀 생성 버튼과 유사하게 작동한다고 설명한다. 상품 생성 양식을 열고, 상품이 생성되기를 기다린 후 상품 목록 상자에 상품을 추가한다. 논리는 동일하나 클래스와 데이터 유형이 다르다.
선택한 항목 삭제 버튼
팀은 삭제 버튼이 목록 상자에서 선택한 항목을 제거한다고 설명한다. 팀의 경우 삭제된 팀을 드롭다운 목록으로 반환하여 사용자가 나중에 다시 추가할 수 있도록 한다. 이런 종류의 실시간 업데이트는 사용자 경험을 개선하고 UI 전역에서 올바른 데이터를 유지하는 데 큰 도움이 된다.
대회 생성 버튼
팀은 이것이 가장 많은 논리를 트리거하기 때문에 큰 버튼이라고 설명한다. 클릭하면 모든 정보를 검증해야 한다:
대회 이름은 비어 있어서는 안 된다
참가 비용은 음수여서는 안 된다
- 적어도 두 팀이 존재해야 한다
검증 후, 팀은 다음 주요 단계인 일정을 생성하는 것을 설명한다. 대회 일정 논리는 대회에 몇 팀이 참여해야 하며, 몇 개의 부전승이 필요한지를 결정한다. 팀은 이 계산을 위한 공식이 적힌 동반 문서를 언급한다. 예를 들어, 대회에 10개의 팀이 있다면, 대회는 16개의 팀으로 시작해야 하며, 이는 첫 라운드에서 6개의 부전승이 필요하다는 것을 의미한다.
팀은 또한 첫 라운드의 순서를 무작위로 해야 한다고 언급한다. 이 모든 것이 완료되면, 양식은 완료되고 애플리케이션은 앞으로 나아갈 수 있다.
팀 생성 양식 논리
팀은 팀 생성 양식으로 이동하여 그 버튼의 논리를 설명한다.
멤버 추가 버튼
팀은 이 버튼이 드롭다운 목록에서 기존 멤버를 팀 목록 상자에 추가한다고 말한다. 그런 다음 해당 멤버를 드롭다운에서 제거하고 두 목록을 새로 고친다. 팀은 이것이 팀 추가 버튼과 유사한 논리라고 강조한다.
멤버 생성 버튼
팀은 멤버 생성 버튼이 네 개의 입력 필드를 사용하여 새로운 팀 멤버를 생성하고, 목록 상자에 추가하며, 필드를 지운다고 설명한다. 이는 애플리케이션 논리에서 사용자 입력이 처리되고 UI에 반영되어야 하는 일반적인 작업의 전형적인 예이다.
팀 생성 버튼
팀은 팀 생성 버튼이 팀을 검증한 다음 생성된 팀을 호출자에게 보내야 한다고 말한다. 그는 양식에 삭제할 플레이어 버튼이 없으며, 이를 추가하여 다른 양식들과 일관된 사용자 경험을 제공해야 한다고 언급한다. 팀은 일관된 UI 동작이 사용자의 익숙함과 편안함에 중요하다고 설명한다.
상품 생성 양식 논리
팀은 상품 생성 양식을 더 간단하다고 설명한다. 이는 네 개의 텍스트 상자와 하나의 버튼을 가지고 있다.
상품 생성 버튼이 클릭되면, 다음과 같이 진행된다:
상품 정보를 검증
데이터를 호출하는 양식에 보내기
- 양식 닫기
팀은 이 양식이 팀 생성과 본질적으로 동일하나 더 적은 구성 요소를 가진 것이라고 설명한다.
대회 대시보드 논리
팀은 대회 대시보드 양식을 간단하지만 본질적이라고 설명한다.
기존 대회를 나열한다. 대회 로드 버튼은 선택된 대회를 위한 대회 뷰어를 열고, 대회 생성 버튼은 대회 생성 양식을 연다.
팀은 대회가 생성되면 즉시 로드할 수 있도록 드롭다운 목록에 추가되어야 한다고 언급한다. 이 논리는 앱 내 데이터 액세스 및 실시간 업데이트의 기본 예이다.
대회 뷰어 논리
팀은 대회 뷰어를 가장 복잡한 양식으로 설명하며, 가장 많은 논리를 가지고 있기 때문이다.
토너먼트 이름
팀은 양식이 로드될 때 대회 이름이 업데이트된다고 설명한다. 양식은 대회 객체를 받아 이름을 표시한다.
라운드 드롭다운
팀은 이 드롭다운이 데이터베이스에서 로드되지 않고 계산된다고 설명한다. 라운드 목록을 확인하고 몇 개가 있는지를 결정한다. 대회에 네 개의 라운드가 있으면, 드롭다운은 1라운드부터 4라운드까지 표시해야 한다.
Unplayed Only 체크박스
팀은 체크박스가 체크된 경우(기본값) 대전 목록 상자가 아직 플레이되지 않은 게임만 표시하도록 필터링된다고 말한다. 체크 해제된 경우 모든 대전이 나타난다.
대전 점수 섹션
팀은 대전을 선택하면 오른쪽 섹션이 팀 이름과 점수로 업데이트된다고 설명한다. 점수 버튼을 통해 사용자가 점수를 업데이트하고 대전을 완료할 수 있다.
다음 라운드 트리거
팀은 한 라운드에서 마지막으로 플레이되지 않은 대전이 점수로 매겨졌을 때 다음 라운드가 시작되어야 한다고 설명한다. 만약 최종 챔피언십 게임이라면 대회는 종료되며 상품이 할당된다. 팀은 또한 참가자가 플레이 일정이 잡힐 때와 결과가 나올 때 이메일을 받는다고 언급한다.
점수 편집 규칙
팀은 점수가 설정된 후에도 업데이트될 수 있는지 묻는다. 그는 가능하다고 결론짓지만, 현재 라운드가 여전히 활성 상태일 때만 가능하다고 말한다. 다음 라운드가 시작된 후 점수를 변경하면 팀이 잘못된 상대와 경기를 하게 될 수 있는 큰 문제가 발생할 수 있다.
따라서 팀은 점수 버튼에 점수를 현재 라운드에서만 변경할 수 있는 논리가 필요하다고 말한다.
다음 단계는 무엇인가요?
팀은 여전히 계획해야 할 논리들이 있으며, 예를 들어 다음과 같은 것들이 있다고 인정한다:
데이터 액세스 및 저장
다양한 데이터 소스 처리
이메일 논리
- 대전 트리거
그는 이것들이 코드 내부에서 계획하는 것이 더 낫다고 말하며, 팀이 코드를 시작하면 이를 다루기로 한다. 이는 과도하게 계획하지 않고, 구현하면서 구축하고 적응하는 소프트웨어 개발의 비즈니스 무결성의 예이다.
결론: 코딩 전 계획
팀은 자신의 비디오를 계획 단계가 완료되었다고 진술하며 마무리한다:
데이터 설계가 완료됨
UI 레이아웃이 그려짐
- 각 양식의 논리가 계획됨
다음 단계는 이를 코드로 옮기는 것이다. 다음 레슨에서는 팀이 클래스 라이브러리를 생성하고 실제 애플리케이션에 데이터 설계를 구현하기 시작할 것이다.

