תכנות הגנתי
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C# של Coddy. שיעור 34 מתוך 66.
תכנות הגנתי הוא טכניקה שעוזרת למנוע שגיאות שנגרמות מהפניות null. היא כוללת בדיקה של ערכי null לפני ניסיון להשתמש באובייקטים.
בדקו אם האובייקט הוא null לפני השימוש בו:
string name = GetNameFromSomewhere();
// בדיקת הגנה
if (name == null)
{
// טיפול במקרה של null
name = "Default Name";
}
// כעת אפשר להשתמש בבטחה ב-name
Console.WriteLine(name.ToUpper());יש לאמת פרמטרים בשיטות:
public void ProcessOrder(Order order)
{
// בדיקת הגנה עבור פרמטר null
if (order == null)
{
Console.WriteLine("Error: Order cannot be null");
return;
}
// כעת ניתן לעבד את ההזמנה בבטחה
Console.WriteLine("Processing order: " + order.Id);
}השתמש באופרטור הגישה המותנית (?.) לבדיקות null נקיות יותר:
Customer customer = GetCustomerFromSomewhere();
// במקום:
// string city = null;
// if (customer != null && customer.Address != null)
// {
// city = customer.Address.City;
// }
// השתמשו בזה:
string city = customer?.Address?.City;אתגר
קלצור מתודה בשם ProcessUserData שמקבלת פרמטר מחרוזת userData. המתודה צריכה:
- לבדוק אם
userDataהוא null — אם כן, להדפיס "Error: User data is null" ולחזור. - לבדוק אם
userDataריק — אם כן, להדפיס "Error: User data is empty" ולחזור. - אם הנתונים תקינים, להמיר אותם לאותיות גדולות ולהדפיס "Processing: [UPPERCASE_DATA]".
נסו בעצמכם
using System;
class ProcessUserData
{
public static void processUserData(string userData)
{
// רמז: יש להתייחס למחרוזת "null" כאל ערך null אמיתי
// כתבו כאן את הקוד שלכם
}
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מערכים רב־ממדיים
יסודות מערכים דו־ממדייםהכרזה ואתחול של מערכים דו־ממדייםגישה לאיברי מערך דו־ממדילולאות מקוננות עם מערכים דו־ממדייםמערכים משונניםפעולות מטריצה נפוצותחזרה – מערכים רב־ממדיים7אופרטורים לוגיים מתקדמים
הערכה בקיצור דרךאופרטורים לוגיים מותניםקדימות אופרטוריםסיכום – אופרטורים מתקדמים2קבלת החלטות מתקדמת
תנאים מרוביםלוגיקה בוליאנית מורכבתהשוואה בין If ל-Switchהצהרות Switch מקוננותסיכום — קבלת החלטות מתקדמת5טיפול בחריגות
יסודות try-catchסוגי חריגותבלוקי catch מרוביםעבודה עם קבציםבלוק finallyשימוש ב-using לעומת try-finallyחריגות מותאמות אישיתסיכום – טיפול בשגיאות3שיפורים בלולאות
ביצועי לולאותאיטרציה במבנים מורכביםכל אחד מסוגי הלולאותרפקטורינג של לולאותסיכום – לולאות שעברו אופטימיזציה6טיפול בערכי Null
יסודות הפניה ל-Nullטיפוסי ערכים שניתנים ל-Nullדפוסי בדיקת Nullתכנות הגנתיסיכום – בטיחות מול Nullתרגלו בעצמכם: קומפיילר C# אונליין