1.5 — 4. Hàm (Functions / Methods)
Mục tiêu bài học
- Nắm được ý chính của bài và mối liên hệ với module.
- Áp dụng được kiến thức vào bối cảnh CRM/.NET backend.
- Sẵn sàng chuyển sang bài kế tiếp với nền tảng chắc chắn.
Nội dung bài học
1.5.1 — Tại sao cần hàm?
Hàm là cách bạn đặt tên cho một khối logic để có thể tái sử dụng. Thay vì viết cùng đoạn code ở nhiều chỗ, bạn đóng gói nó vào một hàm, rồi gọi bất cứ khi nào cần.
1.5.2 — Cú pháp cơ bản
// Hàm không trả về giá trị (void)
void InThongTinKhach(string ten, int diem)
{
Console.WriteLine($"Khách: {ten} | Điểm: {diem}");
}
// Hàm có giá trị trả về
string XacDinhHangKhach(int diem)
{
if (diem >= 500) return "VIP";
if (diem >= 200) return "Bạc";
return "Thường";
}
// Gọi hàm
InThongTinKhach("Lê Văn C", 320);
string hang = XacDinhHangKhach(320);
Console.WriteLine($"Hạng: {hang}"); // Output: Hạng: Bạc
1.5.3 — Tham số mặc định (default parameters)
// Tham số có giá trị mặc định
string TaoGreeting(string ten, string loai = "Thường")
{
return loai == "VIP"
? $"Xin chào quý khách VIP {ten}! Chúng tôi rất trân trọng bạn."
: $"Xin chào {ten}!";
}
Console.WriteLine(TaoGreeting("An")); // Dùng mặc định
Console.WriteLine(TaoGreeting("Bình", "VIP")); // Truyền tường minh
1.5.4 — Quy tắc đặt tên hàm
- Dùng PascalCase cho tên hàm trong C#:
TinhTongDiem,KiemTraVip - Bắt đầu bằng động từ:
Get,Calculate,Check,Send,Create - Tên hàm mô tả chính xác việc hàm làm — đừng viết
XuLy()hayHamMoi()
// Tốt
decimal TinhGiaTriDonHang(List<decimal> danhSachGia) { ... }
bool KiemTraEmailHopLe(string email) { ... }
// Không tốt — tên quá mơ hồ
decimal Xu_Ly(List<decimal> x) { ... }
bool Check(string s) { ... }
Bài tập áp dụng
- Tóm tắt bài học bằng ngôn ngữ của bạn.
- Liên hệ nội dung với một tình huống thực tế trong dự án.
- Đề xuất một cải tiến cụ thể sau khi học bài này.
Tự kiểm tra
- Bạn có thể giải thích lại nội dung chính trong 2 phút không?
- Bạn có ví dụ áp dụng thực tế chưa?
- Bạn biết bước tiếp theo cần học/triển khai là gì không?
Kết luận
Hoàn thành bài này giúp bạn có góc nhìn đầy đủ hơn trước khi đi tiếp trong module.
Điều hướng
- Bài trước: 1.4 — 3. Vòng Lặp (Loops)
- Bài tiếp theo: 1.6 — 5. Mảng và Danh Sách (Arrays & Lists)
- Về module: Trang mục lục