Pengembalian Dini
Termasuk bagian Logika dan Alur dalam perjalanan C# di Coddy. Pelajaran 18 dari 66.
Return lebih awal adalah teknik untuk keluar dari method segera setelah kita mendapatkan jawabannya atau menemukan kondisi yang tidak valid, alih-alih membuat percabangan bertingkat.
Mari bandingkan dua pendekatan untuk memvalidasi nama pengguna:
Tanpa return lebih awal (percabangan bersarang):
public bool ValidateUsername(string username)
{
bool isValid = false;
if (username != null)
{
if (username.Length >= 3)
{
if (username.Length <= 20)
{
isValid = true;
}
}
}
return isValid;
}Dengan pengembalian awal:
public bool ValidateUsername(string username)
{
// Segera kembalikan nilai jika username bernilai null
if (username == null)
return false;
// Segera kembalikan nilai jika username terlalu pendek
if (username.Length < 3)
return false;
// Segera kembalikan nilai jika username terlalu panjang
if (username.Length > 20)
return false;
// Jika sudah sampai di sini, username valid
return true;
}Pengembalian lebih awal membuat kode lebih mudah dibaca dan mengurangi tingkat indentasi.
Tantangan
MudahTulis method bernama ProcessPayment yang menentukan apakah pembayaran dapat diproses berdasarkan:
- Jumlah pembayaran harus positif
- Saldo akun harus mencukupi
- Akun tidak boleh terkunci
Gunakan return awal untuk memeriksa setiap kondisi dan mengembalikan pesan error yang sesuai.
Method ini harus:
- Menerima tiga parameter:
decimal paymentAmount,decimal accountBalance, danbool isAccountLocked - Mengembalikan string yang berisi "Payment processed successfully" atau pesan error
- Menggunakan return awal untuk validasi
Cetak pesan error dengan format yang sama persis seperti berikut:
- "Error: Payment amount must be positive"
- "Error: Insufficient funds"
- "Error: Account is locked"
Coba sendiri
using System;
public class Program
{
public static string ProcessPayment(decimal paymentAmount, decimal accountBalance, bool isAccountLocked)
{
// Tulis kodemu di sini
}
public static void Main(string[] args)
{
decimal paymentAmount = decimal.Parse(Console.ReadLine());
decimal accountBalance = decimal.Parse(Console.ReadLine());
bool isAccountLocked = bool.Parse(Console.ReadLine());
string result = ProcessPayment(paymentAmount, accountBalance, isAccountLocked);
Console.WriteLine(result);
}
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1array Multidimensi
Dasar-Dasar array 2DMendeklarasikan dan Menginisialisasi array 2DMengakses Elemen array 2DPerulangan Bersarang dengan array 2Darray BergerigiOperasi Matriks UmumRangkuman: array Multidimensi4Teknik Alur Kontrol
Pengembalian DiniKlausa PenjagaPernyataan Lompatan (goto)Break dan ContinueMeratakan Percabangan Bersarang7Operator Logika Lanjutan
Evaluasi Hubung SingkatOperator Logika PercabanganPrioritas OperatorRingkasan Operator Lanjutan2Pengambilan Keputusan Tingkat Lanjut
Beberapa KondisiLogika Boolean yang KompleksPerbandingan If dan SwitchPernyataan Switch BersarangUlasan: Pengambilan Keputusan Tingkat Lanjut5Penanganan Exception
Dasar Try-CatchJenis ExceptionBeberapa Blok CatchBekerja dengan fileBlok FinallyUsing vs. Try-FinallyException KustomRingkasan: Penanganan error3Peningkatan Loop
Performa LoopIterasi yang KompleksSetiap Jenis LoopRefactoring LoopRangkuman: Loop yang Dioptimalkan6Penanganan Null
Dasar Referensi NullTipe Nilai NullablePola Pemeriksaan NullPemrograman DefensifRingkasan: Keamanan NullLatihan sendiri: Compiler C# online