푸터 콘텐츠로 바로가기
Iron Academy Logo
C# 애플리케이션
C# 애플리케이션

다른 카테고리

데이터 설계 (레슨 03) - Tim Corey와의 깊은 탐구

Tim Corey
32m 01s

이 "C# 앱 시작부터 마침까지" 과정의 세 번째 수업에서, Tim Corey는 데이터 설계를 위한 중요한 단계를 안내합니다. 사용자 인터페이스를 구축하거나 코드를 작성하기 전에 먼저 애플리케이션이 사용할 데이터 구조를 정의해야 한다고 설명합니다.

이 기사에서는 Tim의 경기 추적 애플리케이션 데이터 디자인 접근 방식을 그의 비디오에서의 정확한 설명과 예제를 따라 탐구할 것입니다. 우리는 Tim의 비디오를 사용하여 왜 데이터 설계가 중요한지와 그것이 전체 애플리케이션에 어떤 영향을 미치는지를 이해하기 위해 앱 설계 주제를 더 깊게 살펴볼 것입니다.

왜 데이터가 우선인가

Tim은 우리가 이미 애플리케이션의 요구 사항과 구조를 확립했음을 상기시키며 수업을 시작합니다. 이제 실제 데이터 구조를 구성할 때입니다. UI를 먼저 디자인하는 것을 선호하는 일부 개발자가 있지만, Tim은 데이터를 먼저 디자인함으로써 더 큰 성공을 거둘 수 있다고 믿습니다.

Tim은 그의 이유를 설명합니다:

"데이터 없이는 애플리케이션은 아무것도 아닙니다." 애플리케이션은 기본적으로 데이터를 표시하고 조작하고 변경하고 저장하는 도구일 뿐이라고 명확히 합니다.

그는 그의 주장을 증명하기 위해 예제를 제공합니다. Microsoft Word 같은 텍스트 편집기조차도 데이터, 즉 텍스트 자체, 포맷팅, 간격 등에 기반을 두고 구축되었습니다. Tim은 심지어 게임도 데이터 기반임을 보여주며 이를 더욱 강조합니다. 예를 들어, 체스 게임은 단지 기물, 위치, 움직임의 모음일 뿐 모든 것이 데이터입니다. 1인칭 슈터 게임도 캐릭터 위치, 총알 속도, 타격 감지, 데미지 값 및 승리 조건 같은 데이터에 크게 의존합니다.

그의 결론은 명확합니다:

"모든 것이 데이터를 중심으로 돌아갑니다."

그래서 그는 데이터가 무엇인지 알면 UI를 구축하기가 더 쉬워지기 때문에 데이터 설계부터 시작합니다. 그렇지 않으면 아무 방향 없이 빈 슬레이트에서 디자인을 하게 됩니다. 이 접근 방식은 비주얼 슈트, 포스터 제작자, 로고 제작자와 같은 도구를 사용하는 개발자와 디자이너에게 도움이 되며, 이러한 앱조차도 템플릿, 글꼴 및 이미지 요소를 만들기 위해 구조화된 데이터에 의존합니다.

코드 작성 전에 계획하기

Tim은 그의 선호하는 계획 방법을 설명합니다: 모든 것을 종이 또는 화이트보드에 작성하기 때문이며, 이는 변경 및 조정하기가 쉽습니다.

그는 Visual Studio를 아직 열지 않는 것을 강력히 추천하며 계획은 코드 외부에서 이루어져야 한다고 강조합니다. 메모장에서 혹은 합법 패드에 계획하는 것이 필수적이라 말하며, 코드에 얽매이지 않고 쉽게 무언가를 제거하고 변경할 수 있기 때문입니다.

Tim은 그의 설계의 깨끗한 버전을 보여주고 단계별로 설명합니다. 그의 첫 번째 규칙은:

"무엇이든지 내려놓으세요."

그는 가장 명백한 객체인 팀으로 시작합니다.

팀 객체 생성하기

Tim은 팀에 필요한 것을 기록하며 디자인을 시작합니다. 그는 두 가지 주요 속성을 식별합니다:

1. 팀 구성원

팀에는 사람이 필요하기 때문에, 그는 사람 목록을 기록합니다:

"나는 팀에 사람이 포함된 것이 필요하다는 것을 알고 있습니다."

그는 아직 Person 객체를 만들 필요는 없다고 설명합니다. 대신 그는 먼저 팀에 집중하고 나중에 Person을 만들 것이라고 적어둡니다. 이는 디자인 집중력을 유지하고 주요 객체에서 길을 잃지 않도록 돕습니다.

2. 팀 이름

다음으로, Tim은 문자열로 팀 이름을 추가합니다.

Tim은 팀 클래스가 단순하며 몇 가지 주요 속성만 필요하다고 설명합니다. 팀 이름은 "Tim Bob Maris Su Al"이나 "핑퐁 토너먼트"처럼 기억에 남아야 하며, 이는 비즈니스가 로고, 브랜드 또는 회사 이름을 사용하는 것과 유사하게 브랜드화 및 식별에 도움이 됩니다.

Person 객체 설계하기

다음으로, Tim은 Person 클래스를 설계합니다. 그는 이름을 앞 이름과 성으로 나누는 것의 중요성을 설명합니다.

왜 앞 이름과 성을 분리해야 하죠?

Tim은 업계의 모범 사례이며 이메일에서 사람을 첫 이름으로 부르는 개인화에 도움이 된다고 말합니다.

또한 이름 나누기 문제에 대해 경고합니다:

  • "Van Wilder"는 "Wilder"가 아닙니다

  • "Mary Sue"는 "Mary"가 아닙니다

그래서 Tim은 앞 이름과 성의 분리는 후에 나누기보다는 입력 단계에서 이루어져야 한다고 강조합니다.

기타 속성

Tim은 더 많은 필드를 추가합니다:

  • 이메일 주소 (문자열)

  • 휴대폰 번호 (문자열)

그는 휴대폰 번호가 숫자로 계산되거나 조작될 것이 아니기 때문에 문자열로 저장되어야 한다고 강조합니다. 그들은 괄호와 대시와 같은 포맷을 포함할 수 있습니다.

Tim은 또한 이들이 C#에 있는 클래스 속성이 될 것이기 때문에 '속성'이라는 단어를 사용한다고 설명합니다.

토너먼트 객체

다음으로, Tim은 가장 중요한 객체인 토너먼트를 소개합니다.

그는 이 애플리케이션이 토너먼트 추적기이므로 토너먼트가 중앙 데이터 허브임을 설명합니다.

토너먼트 속성

Tim은 토너먼트에 필요한 것을 나열합니다:

  1. 토너먼트 이름 요구 사항에는 없었지만, 여러 토너먼트가 동시에 존재할 수 있기 때문에 추가합니다. 이름은 그것들을 구별하는 데 도움이 됩니다.

  2. 참가비용 Tim은 참가비가 관리자에게 팀이 참가할 때 비용을 부과할 수 있도록 한다고 설명합니다. 그는 참가비가 돈이기 때문에 double이 아닌 decimal로 저장되어야 한다고 강조합니다.

  3. 참가한 팀들 토너먼트에 참가한 팀 목록입니다.

  4. 상품들 상품 목록, 이는 0개 이상일 수 있습니다.

  5. 라운드들 이 부분은 복잡합니다. Tim은 각 라운드가 매치업을 포함하고 있으므로 구조가 목록의 리스트가 된다고 설명합니다:

    • 라운드 1: 매치업 목록

    • 라운드 2: 매치업 목록

    • 라운드 3: 매치업 목록 그러므로, 라운드들 = List

Tim은 이 시점에서는 아직 상품과 매치업 객체가 생성되지 않았지만, 괜찮다고 하며, 그들은 나중에 개발될 것이라고 말합니다.

자연 키와 누락된 데이터

Tim은 계획 중 일부 데이터를 놓칠 것이라고 경고합니다. 그는 자연 키에 대해 이야기하며, 일부 개발자가 이를 식별자로 사용한다고 설명합니다. 예를 들어, 토너먼트 이름은 고유하고 식별자로 작동할 수 있습니다.

그러나, Tim은 사용자 정의 ID 속성을 사용하는 것을 선호합니다:

"저는 제 자신만의 것을 만들어 ID라고 부르는 것을 좋아합니다."

인덱싱 및 관리가 더 쉽다고 그는 말합니다.

그는 우리에게 상기시킵니다:

"뭔가를 놓치는 건 괜찮습니다."

그는 어떤 정보를 사람에게 모으는지 보기 위해 아마존 가입이나 전화 연락처와 같은 예제를 연구하고 살펴보도록 권장합니다.

하지만 그는 그것을 너무 신경 쓰지 말라고 경고합니다 - 실수는 발생할 것이며 나중에 수정할 수 있습니다.

과도한 계획하지 마세요

Tim은 중요한 균형을 강조합니다:

"법적 메모지에 있는 잘 계획된 애플리케이션은 쓸모가 없습니다."

그는 계획이 필수적이라고 설명하지만, 과도한 계획은 애플리케이션을 결코 구축하지 못하게 한다고 말합니다. 그는 앞으로 나아가고 디자인이 변해야 한다는 것을 받아들이라고 권장합니다.

상 Object

Tim은 상 개인 및 그 속성을 소개합니다:

  1. 순위 번호 (int)\ 예시: 1위는 1, 2위는 2입니다.

  2. 순위 이름 (string)\ 예시: "챔피언", "퍼스트 러너업".

  3. 상 금액 (decimal)\ 해당 순위에 대한 금액입니다.

  4. 상 퍼센트 (double)\ 예시: 50%는 0.5

그는 시스템이 금액이나 퍼센트를 사용하는지를 결정하게 되며, 이는 둘 중 하나가 0이 아닌 경우에 기반한다고 설명합니다.

매치업 객체

Tim은 다음으로 매치업 객체를 소개합니다:

  • 항목: 매치업 항목 목록

  • 우승자: 팀

  • 라운드 번호: int

그는 매치업 항목이 매치업에서 하나의 팀을 나타냄을 설명합니다.

매치업 항목 객체

Tim은 매치업 항목 속성을 설명합니다:

  • 점수

  • 부모 매치업

그는 왜 팀 속성을 개별적인 팀 속성이 아닌 항목의 목록을 선택했는지를 설명합니다. 이는 점수에 따라 항목을 배치하는 등의 유연성을 제공합니다.

그는 또한 부모 매치업의 목적을 설명합니다:\ 한 라운드에서 다음 라운드로 승자를 연결합니다.

결론 - 데이터 계획 완료

Tim은 이 여섯 가지 클래스(팀, 개인, 토너먼트, 상, 매치업, 매치업항목)가 애플리케이션의 기초라고 결론지었습니다. 그는 데이터 계획이 완료되었으며 다음 수업에서는 사용자 인터페이스를 구축하는 것에 초점을 맞출 것이라고 상기시킵니다.

그는 이 디자인이 혼란스러워 보일지 몰라도 코드에서 구현되면 보다 명확해질 것이라고 말합니다.

Tim의 데이터 우선 접근법을 따름으로써 비디오를 통해 토너먼트 추적기 애플리케이션의 핵심 데이터를 어떻게 구성하는지 명확하게 이해하게 되었습니다. 다음 단계는 이 데이터를 기반으로 UI를 구축하는 것이며, Tim은 4강에서 이를 다룹니다.

Hero Worlddot related to 데이터 설계 (레슨 03) - Tim Corey와의 깊은 탐구
Hero Affiliate related to 데이터 설계 (레슨 03) - Tim Corey와의 깊은 탐구

사랑하는 것을 공유하여 더 많은 수익을 얻으세요

당신은 .NET, C#, Java, Python, 또는 Node.js를 다루는 개발자를 위한 콘텐츠를 만드나요? 당신의 전문성을 추가 수입으로 전환하세요!

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해