בית התפתחות מהי תכונה מותנית בסעיף ג? - הגדרה מטכנולוגיה

מהי תכונה מותנית בסעיף ג? - הגדרה מטכנולוגיה

תוכן עניינים:

Anonim

הגדרה - מה המשמעות של תכונה מותנית?

תכונה מותנית היא תג המשמש לסימון שיטה או מחלקה שביצועם תלוי בהגדרה של מזהה עיבוד מראש.


תכונה מותנית מציינת תנאי לנקוב אוסף תנאים בו שיטות נקראות באופן סלקטיבי על בסיס הגדרת הסמלים. הוא מורה למהדר לקמפל (לשפת ביניים של מיקרוסופט) או לא להרכיב בלוקים של קוד ספציפיים, על סמך תנאי - בין אם מוגדר סמל קומפילציה מותנה ספציפי או לא. אם לא הוגדרו סמלים ספציפיים ברגע שהם נקראים, הקומפיילר יתעלם משיחות לשיטה או למחלקה זו.

Techopedia מסביר את התכונה המותנית

למאפיין מותנה יש את המאפיינים הבאים:

  • ניתן ליישם אותו על שיטות ומחלקות, אך רק אם הם נגזרים מתכונה.
  • בעת החלת תכונה מותנית על כיתה, מחלקת התכונות תישלח למטא נתונים רק אם מוגדר סמל ההידור המותנה.
  • זה לוקח פרמטר אחד, שהוא סמל המזהה השולט בקומפילציה.
  • הטיעונים המועברים לשיטה מותנית או למחלקת תכונות ייבדקו על ידי המהדר.
  • זה מטופל לחלוטין על ידי המהדר ולא על ידי זמן הריצה.
  • לא ניתן להחיל אותה על שיטה המשמשת בביטוי ליצירת צירים.
  • זה לא משפיע על הקוד שנוצר בשיטה מותנית, אלא משפיע על הקריאה לשיטה.

תכונה מותנית מספקת דפוס תכנות הצהרתי ועוזרת לשמור בקלות על קוד המקור. על ידי החלת תכונה מותנית ברמת השיטה, קוד המקור קריא יותר. המתקשר לשיטה לא צריך לקחת קוד נוסף עבור אוסף תנאים. תכונה מותנית משמשת כדי לאפשר פונקציות של איתור ורישום בבניית הבאגים על ידי שימוש במזהה DEBUG כדי להציג ולרשום מידע אבחוני הקשור ליישום. כמו כן, זה עוזר להפריד בין ההיגיון הקשור לבניית הבאגים (במערכות המשמשות לפיתוח) לבין builds שפורסמו, הפרוסים באתרים ויישומים. כדי לשמור על מהדורות מרובות (עם תכונות שנבחרו במהדורה מסוימת) של תוכנה ללא כפילות קוד, אוסף תנאים מהווה את הטכניקה הנכונה שבאמצעותה נשמר קוד המקור הראשי היחיד למהדורות מרובות על סמך הסמלים המתאימים להם.


להלן מספר כללים שיש לעקוב בעת השימוש בתכונה מותנית:

  • שיטה מותנית בתוך הצהרת כיתה או מבנה חייבת להיות בעלת סוג החזרה בטל.
  • תוך שימוש במזהים מרובים כתכונות מותנות, הכללת שיטות (ים) מבוססת על תוצאה של OR לוגית או של לוגית AND על הסמלים שהוגדרו.
  • לא ניתן לציין אותה בשיטה בהצהרת ממשק.
  • לא ניתן להקדים לשיטה מותנית מילת מפתח "עוקפת", אך היא יכולה להיות וירטואלית. אם היא מבוטלת, היא נחשבת לתנאי באופן משתמע.
  • ניתן להגדיר סמלים הנחשבים לעריכה מותנית כאפשרויות שורת פקודה של המהדר או כמשתנים סביבתיים ממעטפת מערכת ההפעלה או כפרגמות (באמצעות הנחיית מעבד מראש "#define") בקוד המקור.
  • שלא כמו C ++, הגדרת הסמלים ב- C # יכולה להיות בכל סדר ומכאן שצריך להגדיר כראוי את ההזמנה בין "#define" לשיטה מותנית.

למרות שהשימוש ב- "#if ו- #endif" מהווה אפשרות חלופית לתכונה מותנית, זה האחרון מספק גישה נקייה יותר, אלגנטית ופחות מועדת לטעויות בהשוואה לראשונה. מבחינה פנימית ההבדל הוא שבעת השימוש בתכונה מותנית לשיטה, השיטה עדיין תהיה חלק מההרכבה ולא נטענת. אך במקרה של #if / #endif, השיטה לא תהיה גלויה במכלול עצמו.

הגדרה זו נכתבה בהקשר של C #
מהי תכונה מותנית בסעיף ג? - הגדרה מטכנולוגיה