ארכיון יומי: 27 אפריל, 2009

בדיקת קיום מתודה ברובי

טוב את הנושא הבא ידעתי, אבל למה לא לתעד בהמשך לפוסט הקודם.

היות ורובי מתנהגת זהה לכל דבר שמתנהג כמו ברווז (ראו הגדרת duck typing), לא תמיד יש לנו מחלקה שמכילה מתודה מסויימת, אבל בכל זאת היא יכולה לעבור בתור פרמטר, אבל בשביל להיות בטוחים שיש לה את המתודה שאנחנו רוצים להשתמש בה, אנחנו נשתמש במתודה: respond_to? (הסימן שאלה צריך להיות בסוף השם, כאן יש לי בעיה לשים תווי LTR וכו' בבלוג).

השימוש במתודה תתבצע בצורה הבאה:

100.respond_to?(:to_s) # true

100.respond_to?(:foo) # false

כמו שאפשר לראות המתודה מחזריה או true או false בהתאם לשם המתודה שאנחנו מחפשים (ניתן גם להעביר מחרוזת ולא סימול). היות והמתודה to_s קיימת, אז אנחנו נוכל להשתמש בה. אבל המתודה foo אינה קיימת כאשר מדובר במחלקה של מספר שלם (100 הוא מחלקה לכל דבר ועניין), ולכן נקבל חזרה ערך של false.

מה היא ספסיפיקציה של תוכנה

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

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

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

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