48. Member Access

מדי פעם אנחנו נתקלים בשורות מהצורה הבאה:

1
2
3
4
Organization facebook;
facebook.GetDepartment("Administration").People[0].Name = "Mark";
facebook.GetDepartment("Administration").People[0].LastName = "Zuckerberg";

במקום זאת, עדיף לכתוב כך:

1
2
3
4
5
6
Organization facebook;
Person admin = facebook.GetDepartment("Administration").People[0];
admin.Name = "Mark";
admin.LastName = "Zuckerberg";

ולמרחיקי הלכת!:

1
2
3
4
5
6
7
8
9
Organization facebook;
Department administartion =
facebook.GetDepartment("Administration");
Person admin = administartion.People[0];
admin.Name = "Mark";
admin.LastName = "Zuckerberg";

מהשיקולים הבאים:

  1. במקרה הטוב, לגישה לשני הMemberים הראשונים אין side effects, וכל מה שקורה כאן זה שנכתב יותר IL, מה שגם משפיע על הביצועים, אבל בצורה זניחה.
    זה אמנם לא נראה כך, אבל בשיטה הראשונה שהצגתי, כתבנו הרבה יותר קוד, שהרי התבצע אותו קוד מספר פעמים!
    שתי הכתיבות שהצגתי יוצרות פחות IL.
  2. במקרה הפחות טוב, לגישה לGetDepartment , לPeople ולאינדקס במקום אפס, יש side effects, ולכן קורות תופעות לוואי מספר פעמים.
  3. נוצר לנו קוד שיותר קל לתחזק אותו, ברור יותר ששתי השורות האלה הן אחת עם השנייה. הדבר גם עוזר לקריאות בד"כ.
  4. הדבר הכי חשוב, לדעתי, הוא שהדבר הזה מאפשר לנו לדבג יותר בקלות את הקוד, עם ביטויים פחות ענקיים בWatch, או בConditional Breakpoint וכו’. לא יודע כמה מכם נתקלו בתופעה שConditional Breakpoint מסובך גורם לVisual Studio לבטל אותו.

בכל אופן כדאי להשתמש בזה איפה שמתאים.

לדוגמה, אם היינו אולי משנים רק את השם הפרטי בדוגמה זו, אולי היה עדיף שנשאיר את זה בשורה אחת.

המשך יום טוב

שתף