אפס אחד אינסוף
אפס אחד אינסוף (באנגלית: Zero One Infinity, ובקיצור: ZOI) הוא כלל אצבע עיצוב תוכנה ומדעי המחשב, המצביע על שימוש בכמויות של אפס, אחד, או אינסוף, כדי לקדם גמישות ופשטות בעיצוב מערכות. העיקרון אומר שכאשר נתקלים בבחירת כמות למשתנה או לתכונה, יש לבחור אחת משלוש האפשרויות הללו, תוך דחיית השימוש בכמויות ביניים. העיקרון נועד למנוע הגבלות מיותרות ולשפר את התפתחות ואחזקת תוכנה.
היסטוריה
[עריכת קוד מקור | עריכה]העיקרון "אפס אחד אינסוף" נטבע לראשונה על ידי וילם ואן דר פואר (אנ') [1], מתכנת ומומחה למדעי המחשב במהלך המאה ה-20. הוא פותח כחלק מתהליך עיצוב תוכנה, כדי לעזור למתכנתים להימנע מקביעת הגבלות שרירותיות בקוד שלהם.
הגדרה
[עריכת קוד מקור | עריכה]עקרון ZOI מצביע על שלוש האפשרויות היחידות למספר פריטים או תכונות שעל מערכת לתמוך בהן:
- איסור מוחלט על הקיום של הישות (אפס).
- קיום מופע אחד בלבד של הישות (אחד).
- אין להגביל את מספר המופעים של הישות, למעט מגבלות פיזיות של המחשב כמו זיכרון (אינסוף).
במשפט אחד הכלל מנוסח כך: "או שאין לאפשר את הקיום של הישות, או שיש לאפשר מופע אחד בלבד של הישות או שיש לאפשר אינסוף מופעים של הישות".
חשיבות
[עריכת קוד מקור | עריכה]החשיבות של עקרון ZOI נובעת מיכולתו לסייע במניעת בעיות תכנותיות נפוצות, כגון קוד קשה לתחזוקה, באגים והגבלות בלתי צפויות במערכת. על ידי שימוש בעיקרון זה, מתכנתים יכולים ליצור תוכנות יותר מודולריות ומתאימות לשינויים.
ההיגיון שעומד מאחורי כלל זה הוא שיש סיבות שמצדיקות איסור קיום של ישות מסוימת, למשל כדי להימנע מפעולה מסוימת. יש סיבות המצדיקות קיום של ישות אחת ויחידה, שכן אם תהיה יותר מישות אחת שתעשה את הפעולה זה יהיה חסר היגיון (כפי שמאפשרת תבנית סינגלטון למשל). אך מרגע שהישות יכולה להתקיים בשניים או יותר מופעים, בדרך כלל אין שום סיבה לחסום את מספר המופעים שלה על ידי קבוע שרירותי N. השאלה שבאמצעותה יש לבחון האם N שרירותי היא "האם הגבלה ל-N מופעים טובה במשהו מהגבלה ל-N+1 מופעים?". אם אין תשובה טובה לשאלה זו - החסם צריך להיות אינסוף, שכן תמיד ניתן לקבוע את החסם בתור N+1 עד לאינסוף.
דוגמאות
[עריכת קוד מקור | עריכה]במדינה שבה אסורה הביגמיה ניתן להגביל במאגר הנתונים של מרשם התושבים את מספר בני הזוג של תושב לאחד. מאידך, את מספר ילדיו של התושב אין להגביל, משום שכל הגבלה תהיה שרירותית.
מערכות אימות: בחירה בין לא לאפשר אימות (אפס), לאפשר אימות יחיד (אחד), או לאפשר מספר בלתי מוגבל של שיטות אימות (אינסוף).
מנגנוני תוספים בתוכנה: תמיכה באפס תוספים, בתוסף יחיד, או בכמות בלתי מוגבלת של תוספים.
ראו גם
[עריכת קוד מקור | עריכה]קישורים חיצוניים
[עריכת קוד מקור | עריכה]- Zero-One-Infinity Rule (באנגלית)