על שימוש בפונקציות לא מתועדות

27 בנובמבר 2007

תגיות: , ,
תגובה אחת

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

אני חושב שיש רק  תשובה אחת לשאלה כזו והיא" "לעולם אל תשתמש ב Undocumented API בתכנה מסחרית". ישנם הרבה סיבות לכלל הזה. הסיבה העיקרית היא שלמיקרוסופט אין שום מחויבות לגבי פונקצית כאלה, הם יכולות להיעלם פתאום כתוצאה מ Window Update או Service Pack או בכלל לשנות תפקוד במערכת ההפעלה הבאה ללא אזהרה מוקדמת.

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

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

לא הייתי מעלה את הנושא הזה אילולא קיבלתי בומרנג השבוע בדיוק על הנושא הזה.

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

זה כבר אופרה אחרת, ואני ארחיב על הנושא הזה בפעם אחרת.

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *

תגובה אחת

  1. OhadAston27 בנובמבר 2007 ב 6:58

    מעניין מאוד!

    מחכה להרחבה שלך בנושא!:)

    הגב