รูปแบบการตรวจสอบและการยืนยันความถูกต้อง
ตรวจสอบข้อมูลเข้าตั้งแต่ต้นด้วยประโยคตรวจสอบ โยนข้อยกเว้นที่เหมาะสม และใช้การตรวจสอบรูปแบบ TryParse กับข้อมูลผู้ใช้
รูปแบบการตรวจสอบและการยืนยันความถูกต้อง เป็นบทเรียน C# Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C# Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C# Academy มีบทเรียนทั้งหมด 3 บทเรียน
เหตุผลที่ต้องใช้ตัวตรวจสอบ
เป้าหมาย: ทำให้เมธอดปลอดภัยและอ่านง่าย
- ใช้ข้อกำหนดตรวจสอบที่ด้านบน
- โยนข้อยกเว้นที่เฉพาะเจาะจง เช่น ArgumentNullException และ ArgumentOutOfRangeException
- ใช้ TryParse สำหรับข้อมูลเข้าจากผู้ใช้
- ล้มเหลวอย่างรวดเร็ว และหลีกเลี่ยงการซ้อนหลายชั้น
การสาธิตตัวตรวจสอบระยะแรก
เพิ่มการตรวจสอบเล็ก ๆ ที่ด้านบนเพื่อยืนยันความถูกต้องของอาร์กิวเมนต์ และโยนข้อยกเว้นที่เฉพาะเจาะจงเพื่อให้ผู้เรียกใช้ทราบว่าเกิดข้อผิดพลาดอะไร
using System;
// Demo: validate inputs at the top; keep main logic flat.
public class Program
{
// Compute price with simple rules; guard early.
public static decimal ComputePrice(string sku, int qty, decimal unitPrice)
{
if (sku == null) throw new ArgumentNullException("sku");
if (sku.Length == 0) throw new ArgumentException("sku must not be empty", "sku");
if (qty <= 0) throw new ArgumentOutOfRangeException("qty", "qty must be > 0");
if (unitPrice < 0m) throw new ArgumentOutOfRangeException("unitPrice", "unitPrice must be >= 0");
// Main logic stays simple
decimal subtotal = qty * unitPrice;
if (qty >= 10) subtotal = subtotal * 0.9m; // small bulk discount
return subtotal;
}
public static void Main(string[] args)
{
Console.WriteLine(ComputePrice("ABC", 2, 5m)); // ok
try { Console.WriteLine(ComputePrice("", 2, 5m)); } catch (Exception ex) { Console.WriteLine(ex.GetType().Name); }
}
}
คลาสตัวช่วย Guard
แยกการตรวจสอบที่ใช้ร่วมกันออกมาไว้ในคลาส Guard ขนาดเล็ก เพื่อให้เนื้อหาเมธอดสะอาดและสอดคล้องกัน
using System;
// Minimal static helper for common validations (beginner friendly).
public static class Guard
{
public static void NotNull(object value, string name)
{
if (value == null) throw new ArgumentNullException(name);
}
public static void NotNullOrEmpty(string value, string name)
{
if (value == null) throw new ArgumentNullException(name);
if (value.Length == 0) throw new ArgumentException(name + " must not be empty", name);
}
public static void InRange(int value, int minInclusive, int maxInclusive, string name)
{
if (value < minInclusive || value > maxInclusive)
throw new ArgumentOutOfRangeException(name, "Expected " + minInclusive + ".." + maxInclusive);
}
}
public class Program
{
static int ScoreFor(string userId, int level)
{
Guard.NotNullOrEmpty(userId, "userId");
Guard.InRange(level, 1, 10, "level");
// pretend logic
return level * 100;
}
public static void Main(string[] args)
{
Console.WriteLine(ScoreFor("u42", 3));
try { Console.WriteLine(ScoreFor(null, 3)); } catch (Exception ex) { Console.WriteLine(ex.GetType().Name); }
}
}
การตรวจสอบด้วย TryParse
สำหรับข้อมูลเข้าที่ไม่ถูกต้องตามปกติ ควรใช้เมธอดรูปแบบ TryParse ที่คืนค่าเท็จแทนการโยนข้อยกเว้น
using System;
// Use TryParse for user-provided text; avoid throwing for normal invalid input.
public class Program
{
public static bool TryGetPort(string text, out int port)
{
port = 0;
int value;
if (!int.TryParse(text, out value)) return false;
if (value < 1 || value > 65535) return false;
port = value;
return true;
}
public static void Main(string[] args)
{
int p;
Console.WriteLine("8080 -> " + (TryGetPort("8080", out p) ? ("ok " + p) : "invalid"));
Console.WriteLine("abc -> " + (TryGetPort("abc", out p) ? ("ok " + p) : "invalid"));
}
}
การโยนข้อยกเว้นเทียบกับการคืนค่า
- โยนข้อยกเว้นสำหรับข้อผิดพลาดของผู้เขียนโปรแกรม เช่น ใช้ส่วนติดต่อโปรแกรมไม่ถูกต้อง ส่งค่าว่างในกรณีที่ไม่อนุญาต หรืออยู่นอกช่วง
- คืนค่าเท็จ/ผลลัพธ์สำหรับความผิดพลาดทั่วไปของผู้ใช้ เช่น ข้อความไม่ถูกต้อง
- ใช้ชนิดข้อยกเว้นที่เฉพาะเจาะจง และระบุชื่อพารามิเตอร์
- ตรวจสอบจากภายนอกเข้าสู่ภายใน โดยเริ่มจากการตรวจสอบที่มีต้นทุนต่ำ
แนวทางปฏิบัติที่ดี
เคล็ดลับ:
- ตรวจสอบที่ขอบเขต เช่น ตัวควบคุมและส่วนติดต่อโปรแกรมสาธารณะ
- ควรใช้เมธอดตัวตรวจสอบขนาดเล็กแทนการซ้อนหลายชั้น
- ทำให้ข้อความข้อผิดพลาดสั้นและชัดเจน
- บันทึกข้อมูลเพียงครั้งเดียวที่ขอบเขต ไม่ใช่ในตัวตรวจสอบทุกตัว
ความหมายของข้อกำหนดตรวจสอบ
สรุปทบทวน
สรุปทบทวน: ตรวจสอบตั้งแต่เนิ่น ๆ ด้วยข้อกำหนดตรวจสอบ โยนข้อยกเว้นเฉพาะเจาะจงสำหรับข้อผิดพลาดของผู้เขียนโปรแกรม และใช้ TryParse สำหรับข้อมูลเข้าจากผู้ใช้ทั่วไป
คำถามที่พบบ่อย
บทเรียน “รูปแบบการตรวจสอบและการยืนยันความถูกต้อง” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “รูปแบบการตรวจสอบและการยืนยันความถูกต้อง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C# Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C# Academy มีบทเรียนทั้งหมด 3 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “รูปแบบการตรวจสอบและการยืนยันความถูกต้อง”
ตรวจสอบข้อมูลเข้าตั้งแต่ต้นด้วยประโยคตรวจสอบ โยนข้อยกเว้นที่เหมาะสม และใช้การตรวจสอบรูปแบบ TryParse กับข้อมูลผู้ใช้ คุณปฏิบัติ C# Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C# Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน C# Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 3 บทเรียน
บทเรียน “รูปแบบการตรวจสอบและการยืนยันความถูกต้อง” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน C# Academy นี้ได้ไหม
ได้ บทเรียน C# Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- นามธรรมสำหรับการบันทึกเหตุการณ์ และ Debug/Trace
- พื้นฐานการทำโปรไฟล์และการติดตาม (แนวคิด)
- รูปแบบการตรวจสอบและการยืนยันความถูกต้อง