0Pricing
C# Academy · Pelajaran

Pola penjagaan & validasi

Validasi masukan sejak awal dengan klausa penjaga, lempar pengecualian yang tepat, dan gunakan pemeriksaan bergaya TryParse untuk data pengguna.

Pola penjagaan & validasi adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C# Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C# Academy mencakup 3 pelajaran total.

Alasan menggunakan penjaga

Tujuan: Jaga agar metode tetap aman dan mudah dibaca.

  • Gunakan klausa penjaga di bagian awal
  • Lempar pengecualian khusus (ArgumentNullException, ArgumentOutOfRangeException)
  • Gunakan TryParse untuk masukan pengguna
  • Gagal dengan cepat; hindari penyarangan yang dalam

Demo penjaga awal

Tambahkan pemeriksaan kecil di bagian awal untuk memvalidasi argumen; lempar pengecualian khusus agar pemanggil mengetahui penyebab masalah.

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); }
  }
}

Kelas helper Guard

Ekstrak pemeriksaan umum ke dalam kelas Guard kecil agar isi metode tetap bersih dan konsisten.

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); }
  }
}

Validasi TryParse

Untuk masukan tidak valid yang biasa terjadi, utamakan metode bergaya TryParse yang mengembalikan false alih-alih melempar pengecualian.

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"));
  }
}

Lempar atau kembalikan

  • Lempar untuk kesalahan pemrogram (penggunaan API yang salah, null yang tidak diizinkan, nilai di luar rentang)
  • Kembalikan false/Hasil untuk kesalahan pengguna yang normal (teks tidak valid)
  • Gunakan jenis pengecualian khusus; sertakan nama parameter
  • Validasi dari luar ke dalam: lakukan pemeriksaan murah terlebih dahulu

Praktik terbaik

Kiat:

  • Validasi pada batas (pengendali, API publik)
  • Utamakan metode penjaga kecil daripada penyarangan yang dalam
  • Buat pesan kesalahan tetap singkat dan jelas
  • Catat sekali pada batas, bukan di setiap penjaga

Makna klausa penjaga

Pemeriksaan singkat: Pernyataan mana yang paling tepat menjelaskan klausa penjaga?

Rangkuman

Rangkuman: Lakukan validasi lebih awal dengan klausa penjaga, lempar pengecualian khusus untuk kesalahan pemrogram, dan gunakan TryParse untuk masukan pengguna sehari-hari.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pola penjagaan & validasi” gratis?

Ya — teks lengkap “Pola penjagaan & validasi” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C# Academy, upgrade ke CoddyKit PRO. Kursus C# Academy mencakup 3 pelajaran total.

Apa yang akan aku pelajari di “Pola penjagaan & validasi”?

Validasi masukan sejak awal dengan klausa penjaga, lempar pengecualian yang tepat, dan gunakan pemeriksaan bergaya TryParse untuk data pengguna. Kamu berlatih C# Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai C# Academy?

Tidak diperlukan pengalaman sebelumnya. C# Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 3.

Berapa lama pelajaran “Pola penjagaan & validasi” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran C# Academy ini?

Ya. Setiap pelajaran C# Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Abstraksi logging, Debug/Trace
  2. Pembuatan profil & jejak dasar (konsep)
  3. Pola penjagaan & validasi
← Kembali ke C# Academy