אפס אחד אינסוף

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

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

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

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

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

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

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

 דוגמאות 
במדינה שבה אסורה הביגמיה ניתן להגביל במאגר הנתונים של מרשם התושבים את מספר בני הזוג של תושב לאחד. מאידך, את מספר ילדיו של התושב אין להגביל, משום שכל הגבלה תהיה שרירותית. 

מערכות אימות: בחירה בין לא לאפשר אימות (אפס), לאפשר אימות יחיד (אחד), או לאפשר מספר בלתי מוגבל של שיטות אימות (אינסוף). 

מנגנוני תוספים בתוכנה: תמיכה באפס תוספים, בתוסף יחיד, או בכמות בלתי מוגבלת של תוספים. 

 ראו גם 

 פיתוח תוכנה
 מדעי המחשב

 קישורים חיצוניים 
 Zero-One-Infinity Rule 

 הערות שוליים 

קטגוריה:הנדסת תוכנה
קטגוריה:אפס
קטגוריה:1 (מספר)
קטגוריה:אינסוף
קטגוריה:עקרונות בתכנות