0Pricing
C# Academy · บทเรียน

รูปแบบการตรวจสอบและการยืนยันความถูกต้อง

ตรวจสอบข้อมูลเข้าตั้งแต่ต้นด้วยประโยคตรวจสอบ โยนข้อยกเว้นที่เหมาะสม และใช้การตรวจสอบรูปแบบ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. นามธรรมสำหรับการบันทึกเหตุการณ์ และ Debug/Trace
  2. พื้นฐานการทำโปรไฟล์และการติดตาม (แนวคิด)
  3. รูปแบบการตรวจสอบและการยืนยันความถูกต้อง
← กลับไปที่ C# Academy