**1개월차(4주)**는 C#/.NET의 기초 체력을 탄탄히 만드는 달이야.
목표는 “언어 기본기 + 컬렉션/LINQ + 비동기 + 예외 + 테스트 + 도구(클리/디버깅/코드스타일)”까지 한번에 잡는 것. 아래 계획을 그대로 따라오면 돼.
1개월차 로드맵(주차별)
1주차 — C# 문법 기초와 CLI 감각 익히기
핵심 개념
- C# 기본 문법(타입, 변수, 연산자, 분기/반복, 메서드), 값/참조 타입 감각 잡기. C# 가이드는 여기서 바로 시작! (Microsoft Learn)
- dotnet CLI로 프로젝트 만들고 빌드/실행/테스트까지 한 번에. (Microsoft Learn)
읽을 자료(짧게 훑기)
- “A tour of C#” 인터랙티브 튜토리얼(브라우저에서 바로 실행). (Microsoft Learn)
- C# 초보자용 러닝 경로(Part 1). (Microsoft Learn)
실습
- 터미널만으로 콘솔 앱 2개 만들기:
dotnet new console -n Basics && cd Basics
dotnet run
- 미니 과제 3종
- 숫자·문자열·날짜 다루기 유틸(입출력 포함)
- 간단 계산기(예: 평균, 표준편차)
- 문자열 파서(쉼표 구분 라인 → 숫자 배열 변환)
출력물
- Basics 리포지토리 + README(실행 방법/예제 입력·출력).
- Git 기본 명령으로 버전 관리 시작(init, add, commit, log). Pro Git은 북마크! (Git)
2주차 — OOP/제네릭/컬렉션 제대로 이해하기
핵심 개념
- 클래스/구조체/레코드, 캡슐화·불변성, 인터페이스, 제네릭의 필요성.
- 컬렉션(List/Dictionary/Queue/Stack 등) 특성 비교·선택 기준. (Microsoft Learn)
- 예외의 철학과 기본 문법(try/catch/finally/throw), 언제 예외를 쓰고 피해야 하는지. (Microsoft Learn)
읽을 자료
- .NET 컬렉션 개요(선택 가이드 포함). (Microsoft Learn)
- 예외 기본/모범 사례. (Microsoft Learn)
실습
- “성적부 라이브러리” 만들기
- Student, Course, GradeBook<T> 제네릭 클래스 설계
- 평균/상위 N%/과락 판단 메서드
- 잘못된 입력에 대한 예외 던지기(의미있는 예외 타입 선택)
출력물
- GradeBook 클래스라이브러리 + 콘솔 데모.
- “예외 정책” 섹션이 있는 README(언제 예외를 던지고, 어떤 메시지를 쓰는지).
3주차 — LINQ로 데이터 다루기 + 파일 I/O
핵심 개념
- LINQ 두 가지 문법(쿼리식 vs 메서드 체이닝)과 표준 연산자(Where/Select/GroupBy/Join/OrderBy…). 컴파일러가 쿼리식을 메서드 호출로 번역한다는 점 이해. (Microsoft Learn)
- 다양한 데이터 소스에 동일 패턴으로 질의한다는 LINQ 철학. (Microsoft Learn)
읽을 자료
- LINQ 시작하기/튜토리얼. (Microsoft Learn)
실습
- “CSV 파서 & 리포트” 콘솔 앱
- students.csv(이름, 과목, 점수) 읽기 → LINQ로 통계(평균, 탑 3, 과목별 분포)
- 결과를 정렬/그룹핑해서 표 형태로 출력(+ JSON 파일로 저장)
- 잘못된 레코드는 예외나 검증 실패로 기록하고 계속 처리
출력물
- CsvReport 앱 + 샘플 CSV/JSON 결과 파일.
4주차 — 비동기(async/await) + 단위테스트(xUnit) + 디버깅
핵심 개념
- async/await + Task/Task<T> 모델: I/O 바운드(비동기 API await), CPU 바운드(Task.Run) 구분하기. (Microsoft Learn)
- C# 비동기 프로그래밍 개요(공식 가이드의 ‘아침식사’ 예제 참고). (Microsoft Learn)
- xUnit + dotnet test로 단위 테스트 작성. (Microsoft Learn, xunit.net)
- VS Code/Visual Studio에서 디버깅(브레이크포인트, 스텝 인/아웃, 워치, 콜스택). (Microsoft Learn)
실습
- “웹 다운로더” 콘솔 앱
- URL 목록을 비동기 병렬로 다운로드(최대 동시 개수 제한, 취소 토큰 적용)
- 예외/시간초과 처리(재시도 최대 N회)
- 진행률 로그 출력
- “단위 테스트”
- 순수 함수(예: 통계 계산) 테스트 5~8개
- 예외를 기대하는 테스트(잘못된 입력 시)
- 비동기 메서드 테스트(Timeout 시나리오 포함)
출력물
- Downloader 앱 + Downloader.Tests 프로젝트.
- 디버깅 스크린샷(브레이크포인트/변수 조사) 2~3장 저장. VS Code와 Visual Studio 둘 다 가이드 있음. (Microsoft Learn)
주간 루틴(권장 스케줄, 하루 60–90분)
- Day 1–2: 개념 읽기 → 작은 코드 조각 실험(콘솔 앱/스크립트).
- Day 3–4: 주간 미니 프로젝트 구현(테스트 포함).
- Day 5: 리팩터링 + README 문서화 + dotnet test/dotnet format로 마무리.
- dotnet format은 .editorconfig 기반으로 스타일을 맞춰 줌. SDK 내장 분석기와 함께 쓰면 좋아. (Microsoft Learn)
체크리스트(1개월차 완료 기준)
- dotnet new/run/build/test를 설명 없이도 사용 가능. (Microsoft Learn)
- List/Dictionary 차이와 선택 기준을 설명하고 예제로 시연 가능. (Microsoft Learn)
- LINQ로 필터/투영/그룹핑/조인 최소 10개 쿼리를 자연스럽게 작성. (Microsoft Learn)
- async/await로 I/O 바운드 작업을 병렬 처리하고 취소/예외를 올바르게 처리. (Microsoft Learn)
- 예외 사용 원칙(정말 예외적인 상황에만, 의미있는 메시지/타입, finally 처리)을 이해하고 준수. (Microsoft Learn)
- xUnit로 순수 함수/예외/비동기 테스트 작성 가능. (Microsoft Learn)
- VS Code 또는 Visual Studio에서 브레이크포인트·콜스택·워치 사용 가능. (Microsoft Learn)
보너스(있으면 좋은 것들)
- nullable reference types 켜고 경고 없애기(널 안정성 훈련). (Microsoft Learn)
- C# 최신 문법은 “What’s new in C# 12”에서 궁금한 것만 골라 맛보기(필수 아님). (Microsoft Learn)
- CLI 앱을 제대로 만들고 싶다면 System.CommandLine도 체험(옵션 파싱/도움말 자동 생성). (Microsoft Learn)
바로 써먹는 명령 모음
# 새 콘솔/테스트 프로젝트
dotnet new console -n Lab.Console
dotnet new xunit -n Lab.Tests
# 솔루션에 추가하고 참조 연결
dotnet new sln -n Lab && dotnet sln add **/*.csproj
dotnet add Lab.Tests reference Lab.Console
# 빌드/실행/테스트/포맷
dotnet build
dotnet run --project Lab.Console
dotnet test
dotnet format
자주 막히는 포인트 & 팁
- 비동기 오해: CPU 바운드는 Task.Run, I/O 바운드는 API 자체가 async이어야 진짜 비동기다. 무조건 Task.Run이 답은 아님. (Microsoft Learn)
- LINQ 성능: 체이닝은 읽기 좋지만, 큰 컬렉션에서 불필요한 중간 ToList() 호출은 피하자(지연 평가 개념 이해). (Microsoft Learn)
- 예외 남발 금지: 흐름 제어로 예외를 쓰지 말고, “정상/예상 가능한 상황”은 조건/반환값으로 처리. 모범사례 참고. (Microsoft Learn)
- 디버깅 습관: Print 디버깅에만 의존하지 말고 브레이크포인트/콜스택/워치를 생활화. 공식 튜토리얼로 손에 익혀 두자. (Microsoft Learn)
'프로그램 > 공부' 카테고리의 다른 글
Chat GPT와 함께 공부하기 (0) | 2025.08.11 |
---|