쉽게 배우는 C# 프로그래밍 - 책 리뷰

 

쉽게 배우는 C# 프로그래밍 (3판) - 책 리뷰

블로그에도 책리뷰 쓴 것 남겨두기 위해서, 예전에 썼던 책리뷰도 추가해보았다.

앞으로는 책 읽은 리뷰를 블로그에 먼저 쓰고 다른 곳에 쓰도록 하자! 😅

책 정보

책 리뷰

C# 책을 제대로 본적이 없다가...

한번 배워보고 싶어서 대학교재같은?느낌의 이 책을 구매해서 한달정도 보고 다보았습니다.

내용은 잘 따라가서 잘 읽었고, 각 장마다 Windows Forms 프로젝트를 조금씩 진행할 수 있어서 재미있었습니다.

13장에서 일단 화면 보고 그리라고 해서 윈도우 폼 그리는게 약간 해깔렸지만, 그 이전의 윈도우 폼 예제를 다 진행해봤다면, 좀 신경 쓰면 해결할 수 있는 수준 이였습니다. Visual Studio 2026에서 윈폼 컨트롤들을 몇번 쓰다보니 잘 적응이 되더라구요. 무사히 완료했습니다.


13장에서의 건의 사항은 ... 비어있는 예외 블록은 제거하고 예외 상황은 미리 코드로 처리하는 것이 나을 것 같긴합니다. null일 경우 빈 문자열 등을 넣게 해서 저는 제거 했습니다.

그리고 Label 5~8 부분도 이벤트를 걸어서, 대여 / 반납 / 도서 추가|삭제 / 사용자 추가| 삭제가 일어날 때 자동 업데이트가 되도록 하도록 약간 내용 보강이 되면 좋을 것 같구요.

 

14장 마지막장의 챗봇도... OpenAI에서 Google Gemini로 변환해서 마무리 하였습니다.


개정판에서는 OpenAI 대신 무료인 Gemini를 적용하는 것으로 해도 좋을 것 같긴합니다. 😅

그리고 14장에서 약간 수정되야할 부분이 있다면 RichTextBox를 그냥 Disabled로 바꾸는게 아니라 ReadOnly 상태로 해야할 것 같더라구요.. 그래야지 스크롤을 마우스로 조작할 수 있었습니다.

책에 없는 내용이지만, xUnit 테스트 프로젝트를 추가해서 몇몇 예제 프로젝트의 코드만 테스트해보았는데,


Visual Studio + .NET 테스트 환경도 꽤 괜찮다는 느낌도 받았습니다.

이젠 좀 더 어려운 책을 보더라도 이해가 잘될 것 같은 느낌입니다..

그럼 책 잘 보았습니다. 👍👍

리뷰 보충

리뷰에서 건의했던 내용을 코드로 보충해보자!


13장: 도서 관리 프로그램

Github 저장소

이벤트 걸기

데이터가 변경될 때마다 상태 라벨이 자동으로 갱신되도록 이벤트를 사용했다. DataManager.Save() 메서드에서는 저장이 끝난 뒤 DataChanged 이벤트를 발생시키고, Form1 생성자에서는 해당 이벤트를 구독하여 UpdateStatusLabels()가 실행되도록 했다.

// DataManager Save() 메서드 
// 저장 후 이벤트 발생
DataChanged?.Invoke(null, EventArgs.Empty);

// Form1의 생성자
// 데이터 변경 이벤트 구독
DataManager.DataChanged += (sender, e) => UpdateStatusLabels();
// 라벨 설정
UpdateStatusLabels();

XUnit 테스트 코드 추가

책과 유저 정보를 저장하는 Book.xml 생성이 제대로 되는지?, 로드해서 데이터가 로드 되었는지 정도만 테스트 하였다.

public class DataManagerTests
{
[Fact]
public void Save_ShouldCreateXmlFiles()
{
// Arrange
DataManager.Books.Add(new Book
{
Isbn = "123",
Name = "Test Book",
Publisher = "Test Publisher",
Page = 500,
UserId = 1,
UserName = "Test User",
IsBorrowed = true,
BorrowedAt = DateTime.Now
});

DataManager.Users.Add(new User
{
Id = 1,
Name = "Test User",
});

// Act
DataManager.Save();

// Assert
Assert.True(File.Exists("./Books.xml"));
}

[Fact]
public void Load_ShouldLoadBooksFromXml()
{
// Arrange & Act
DataManager.Load();

// Assert
Assert.NotNull(DataManager.Books);
Assert.NotNull(DataManager.Users);
}
}

 

 

14장: Gemini 전환 프로젝트

Github 저장소

책의 예제가 OpenAI로 작성되어있었는데, Gemini 2.5 Flash 무료 API 사용하도록 수정한 코드 이다..

💡실행하려면 GOOGLE_API_KEY 가 시스템 환경변수에 설정되어있어야하고,

예제 코드에서는 다음과 같이 환경변수에서 API KEY를 얻도록 작성하였다.

 var apiKey = Environment.GetEnvironmentVariable("GOOGLE_API_KEY");

 


검토

블로그에 글이 너무 없어서... 앞으로의 책 리뷰도 꼭 여기다 먼저 쓰자 😂😂 

 

 

 

댓글

이 블로그의 인기 게시물

한글 2005 가정용

전자정부 프레임워크 v5.0 교육자료 IDE, 다른 드라이브에 설치하는 완벽 가이드

V3Pro 2002 Deluxe