החזרות מוקדמות
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C# של Coddy. שיעור 18 מתוך 66.
החזרות מוקדמות הן טכניקה שבה יוצאים ממתודה ברגע שיש לנו את התשובה או נתקלים בתנאי לא תקין, במקום לקנן תנאים.
בואו נשווה בין שתי גישות לאימות שם משתמש:
ללא החזרות מוקדמות (תנאים מקוננים):
public bool ValidateUsername(string username)
{
bool isValid = false;
if (username != null)
{
if (username.Length >= 3)
{
if (username.Length <= 20)
{
isValid = true;
}
}
}
return isValid;
}עם החזרות מוקדמות:
public bool ValidateUsername(string username)
{
// החזר ערך מיד אם username הוא null
if (username == null)
return false;
// החזר ערך מיד אם username קצר מדי
if (username.Length < 3)
return false;
// החזר ערך מיד אם username ארוך מדי
if (username.Length > 20)
return false;
// אם הגענו לכאן, username תקין
return true;
}החזרות מוקדמות הופכות את הקוד לקריא יותר ומפחיתות את רמות ההזחה.
אתגר
קלכתוב מתודה בשם ProcessPayment שקובעת אם ניתן לעבד תשלום על סמך:
- סכום התשלום חייב להיות חיובי
- יתרת החשבון חייבת להיות מספקת
- החשבון לא חייב להיות נעול
השתמש בהחזרות מוקדמות כדי לבדוק כל תנאי ולהחזיר הודעות שגיאה מתאימות.
המתודה צריכה:
- לקבל שלושה פרמטרים:
decimal paymentAmount,decimal accountBalance, ו-bool isAccountLocked - להחזיר מחרוזת עם "Payment processed successfully" או הודעת שגיאה
- להשתמש בהחזרות מוקדמות לצורך אימות
הדפס הודעות שגיאה בדיוק בפורמטים האלה:
- "Error: Payment amount must be positive"
- "Error: Insufficient funds"
- "Error: Account is locked"
נסו בעצמכם
using System;
public class Program
{
public static string ProcessPayment(decimal paymentAmount, decimal accountBalance, bool isAccountLocked)
{
// כתבו כאן את הקוד שלכם
}
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);
}
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מערכים רב־ממדיים
יסודות מערכים דו־ממדייםהכרזה ואתחול של מערכים דו־ממדייםגישה לאיברי מערך דו־ממדילולאות מקוננות עם מערכים דו־ממדייםמערכים משונניםפעולות מטריצה נפוצותחזרה – מערכים רב־ממדיים7אופרטורים לוגיים מתקדמים
הערכה בקיצור דרךאופרטורים לוגיים מותניםקדימות אופרטוריםסיכום – אופרטורים מתקדמים2קבלת החלטות מתקדמת
תנאים מרוביםלוגיקה בוליאנית מורכבתהשוואה בין If ל-Switchהצהרות Switch מקוננותסיכום — קבלת החלטות מתקדמת5טיפול בחריגות
יסודות try-catchסוגי חריגותבלוקי catch מרוביםעבודה עם קבציםבלוק finallyשימוש ב-using לעומת try-finallyחריגות מותאמות אישיתסיכום – טיפול בשגיאות3שיפורים בלולאות
ביצועי לולאותאיטרציה במבנים מורכביםכל אחד מסוגי הלולאותרפקטורינג של לולאותסיכום – לולאות שעברו אופטימיזציה6טיפול בערכי Null
יסודות הפניה ל-Nullטיפוסי ערכים שניתנים ל-Nullדפוסי בדיקת Nullתכנות הגנתיסיכום – בטיחות מול Nullתרגלו בעצמכם: קומפיילר C# אונליין