ראסט - פונקציית main נקיה יותר עם Result



כחלק מהמסע שלנו לניהול שגיאות נכון נפל לנו האסימון שלהשתמש ב unwrap או expect יכול להיות רעיון לא כל כך טוב ועלול להביא לסיום מיידי של הפרוסס שלנו במקרים שאולי לא התכוונו אליהם. אז השתמשנו ב clippy deny unwrap used שגרם לקומפילציה לא לעבור במידה ונכנס unwrap לקוד.

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

לימים פונקציית ה main הכילה יותר ויותר ולידציות כאלה ובנוסף גם התחלנו להרוג את הפרוסס שלנו כחלק מתהליך פונקציונאלי תקין במקרים מסויימים (exit code).

בפוסט אנסה להציג את האלטרנטיבה שבחרנו לטיפול בשגיאות ב main באמצעות unwrap

איך נראה main סטנדרטי

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

main שמחזיר result


דבר קטן נוסף - main לא חייב להחזיר "()" או unit בהגה המקצועית. במקרים בהם הפרוסס שלנו יכול לצאת במגוון exit codes שונים, נוכל להגדיר ש main יחזיר std::process::ExitCode .


סיכום

קריאות ל unwrap מתוך פונקציית ה main הן לא דבר שגוי כאשר אנחנו באמת רוצים לקרוס בהינתן שגיאה. הפוסט מציע דרך אלטרנטיבית שאני מצאתי ״נקייה״ יותר - החזרת Result מפונקציית ה main ואפשרות לפעפע שגיאות באמצעות ? כמו שאנחנו רגילים לראות בפונקציות הרגילות שלנו.

תגובות

  1. היי, אני כל כך מתרגשת לקבל בחזרה את נישואיי השבורים ואת בעלי אחרי שהוא עזב אותי ואת שני ילדינו למען אישה אחרת. אחרי 8 שנות נישואים, לבעלי ולי היה ויכוח אחד על השני עד שהוא סוף סוף עזב אותי ועבר לקליפורניה להיות עם אישה אחרת. הרגשתי שהחיים שלי נגמרו והילדים שלי חשבו שהם לעולם לא יראו את אביהם שוב. ניסיתי להיות חזקה רק בשביל הילדים, אבל לא יכולתי לשלוט בכאבים שעינו אותי, ליבי התמלא עצב וכאב, כי הייתי ממש מאוהבת בבעלי. אני חושבת עליו כל יום ולילה ותמיד רוצה שהוא יחזור אליי, הייתי ממש נסערת והייתי צריכה עזרה, אז חיפשתי עזרה באינטרנט ונתקלתי באתר שהציע שד"ר אפאטה יכול לעזור לי לחזור במהירות, אז הרגשתי שאני צריכה לנסות את זה. יצרתי איתו קשר והוא אמר לי מה לעשות ועשיתי את זה, ואז הוא עשה (כישוף אהבה) בשבילי. 48 שעות לאחר מכן, בעלי באמת התקשר אליי ואמר לי שהוא מתגעגע אליי ולילדים כל כך, כל כך מדהים!! אז הוא חזר באותו יום, עם הרבה אהבה ושמחה, והתנצל על הטעות שלו ועל הכאב שהוא גרם לי ולילדים. ואז, מאותו יום ואילך, הנישואים שלנו היו חזקים יותר מבעבר, הכל בזכות ד"ר אפאטה. הוא כל כך חזק והחלטתי לשתף את הסיפור שלי באינטרנט. ד"ר אפאטה הוא גלגל לחשים אמיתי ועוצמתי שאני תמיד אתפלל שיחיה זמן רב כדי לעזור לילדיי בעת צרה. אם אתם כאן וצריכים את האקס שלכם בחזרה או שבעלכם עבר לאישה אחרת, אל תבכו יותר, צרו קשר עם הקוסם העוצמתי הזה עכשיו. הנה פרטי הקשר שלו: שלחו לו אימייל לכתובת: drapata4@gmail.com, אתם יכולים גם ליצור איתו קשר דרך וואטסאפ או וייבר עם המספר הזה (+447307347648), תודה.

    השבמחק

הוסף רשומת תגובה

פוסטים פופולריים מהבלוג הזה

קודמתי לדרגת סיניור במיקרוסופט - מה למדתי בדרך

מהם קבצי DLL ואיך להשתמש בהם?

Rust Builder Pattern