אוטומציה נכונה יותר | שימוש בקבצי קונפיגורציה | C# Settings



פעמים רבות בתרחישי אוטומציה ובמערכות בכלל, אנו נדרשים להשתמש במשתנים או בקבועים כמו נתיבים לקבצים, שמות של קבצים, פורטים, כתובות של אתרים וכו'..

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

לפני שנצלול לעומק הדברים אני רוצה לתת דוגמה לקוד שאני רואה לא מעט.

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




בתרחיש ניתן לראות שכתובת האתר אליו התרחיש גולש (http://google.com) היא "Hard Coded", זאת אומרת, כתובה ישירות אל תוך הקוד.

מה הבעיה בכתיבה Hard Coded?

Hard Coding נחשב ל anti-pattern, לא יעיל ולא פרודקטיבי, והכי חשוב - עלול לגרום לנו ללא מעט בעיות עתידיות.

  • DRY - כאשר אנחנו כותבים משתנים וקבועים מסוימים אנחנו מסכנים את הקוד שלנו בחילול עיקרון (DRY (Do Not Repeat Yourself, שאומר שאסור לנו לחזור על עצמנו בקוד, בשום פנים ואופן! לא נרצה לכתוב שום שורה פעמיים! העיקרון מעודד אותנו להוציא כל פונקציונליות, פשוטה ככל שתהיה, לפונקציה נפרדת, וכך למנוע כתיבה חוזרת של קוד, ושל משתנים.
  • Maintainability - כאשר נבצע את כתיבת המשתנים והקבועים Hard Coded, ונצטרך להשתמש באותם המשתנים שוב ושוב (כמו כתובת של דף לבדיקות Selenium), ויבוא יום שנאלץ לבצע שינוי בכתובת אליה אנחנו פונים (כתובת האתר השתנתה, הפורט של השרת שלנו השתנה וכו'), נצטרך לעבור בכל מופע של המשתנה ולשנות אותו - דבר שפעמים רבות יוצר באגים בקוד שלנו, כי סבירות גבוהה שלא שכחנו לשנות את המשתנה בכל המקומות בו כתבנו אותו.

אז מה עושים?

במקרים כאלו נשתמש בקבצי קונפיגורציה.

מה הוא קובץ קונפיגורציה?

קובץ אשר מכיל הגדרות בהם תשתמש התכנית שלנו

באיזה סוג של קובץ קונפיגורציה נעדיף להשתמש?

אז התשובה היא... מוכן??.. ניחשת נכון - זה תלוי.

קיימות סביבות פיתוח או שפות תכנות אשר מנגישות למשתמשיה פלטפורמות לכתיבת קבצי קונפיגורציה עצמאית (כמו AppConfig או WebConfig ב C#), אך עדיין ניתן בכל שפת תכנות גם לכתוב את הקונפיגורציה שלנו למחלקה כלשהי בקוד שלנו, לקובץ Json או כמובן לקובץ XML.

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

דוגמה על שימוש בקבצי הקונפיגורציה שנותנת C#

ב-C# קיימת לנו האפשרות ליצור קובץ קונפיגורציה באמצעות Settings File.
Settings File הוא קובץ בעל ממשק ויזואלי מאוד נוח אשר מתרגם ומתווסף לאחר בנייתו לקובץ ה-app.config.

ניצור את קובץ ה Settings כך:

נלחץ על צירוף המקשים ctrl+shift+a על מנת לפתוח מסך ה- "add new item" של visual studio

ולאחר שהמסך יפתח נחפש "Settings File" נבחר את הקובץ, וניתן לו שם.


לאחר מכן נוכל לראות ב-solution explorer שלנו שנוצר קובץ חדש. נלחץ עליו ונוסיף ערך לתוכו.



לאחר שהוספנו את המשתנה לקובץ ה-Settings נוכל להשתמש בו כך:

driver.Navigate().GoToUrl(ConfigFile.Default.GoogleUrl); 

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

סיכום

היום למדנו את חשיבות קבצי הקונפיגורציה, הבנו את הסיכונים שאנחנו לוקחים כאשר איננו משתמשים בהם, וראינו אחת מעשרות האפשרויות לקבצי קונפיגורציה - SettingsFile ב-C#.

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

נתראה בפוסט הבא :)






תגובות

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

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

תכנות מונחה עצמים | Dependency Inversion Principle

מה ההבדל בין אוטומציה לפיתוח רגיל