סליחה באיזה חודש עברי אנחנו ?

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

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

אבל כאן נתקלתי בבעיה. למשל אצל הד"ר, תשרי מתחיל כמו שצריך, אבל אדר א' הוא מספר 13, בעוד שחודש אדר בעצמו מכיל מספר נמוך יותר, כך שפתאום להתחיל לשאול מה המספר, אומנם פשוט, אבל לא נוח לתחזוקה. לשם כך יצרתי Enum פשוט:

THebMonths = (
  hmTishri, hmCheshvan, hmKislev, hmTevet, hmShvat, hmAdar,
  hmNisan,  hmIyyar,    hmSivan,  hmTamuz, hmAv,    hmElul,
  hmAdarI,  hmAdarII
);

ומאוד פשוט עכשיו להבין על איזה חודש מדובר, היות וכל מה שצריך לעשות זה:

THebMonths(h.HebMonth)

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

בעקבות זה, דיברתי עם קובי והספרייה תעבור כמה שינויים קרובים שספריית וזה הוספת Enum במקום קוד "סטטי" (או יותר נכון קבוע) של הערכים, ואני מתכוון לעזור לד"ר בעבודה הזו בשפת המקור -> C (ראו הוזהרתם).

להשאיר תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s