פתגם ידוע אומר שאין דבר קבוע יותר מהזמני, וגם כשאנחנו כותבים קוד זמני יש לו נטיה מרגיזה להגיע עד הקוד הסופי ולחולל שם צרות. הנה שיטה קטנה שהמצאתי כדי למזער נזקים מהסוג הזה.
בעולם מושלם, היינו מתכננים את כל הקוד בראש (או על הנייר), ואז מקלידים אותו במכה אחת. במקרה כזה – ובהנחה שלא עשינו טעויות לוגיות בדרך – הבאגים היחידים היו כתוצאה משגיאות הקלדה. אלא שבפועל, כמובן, כתיבת הקוד היא תהליך מבולגן למדי, וזה נכון במיוחד לעבודה עם מיקרו-בקרים שאפשרויות הדיבוג שלהם מצומצמות יחסית לתכנות "רגיל".
למעשה, בכל פעם שאני כותב תוכנה של יותר מכמה שורות למיקרו-בקר, אני בונה אותה בהדרגה, עם קוד בדיקה זמני על ימין ועל שמאל. לדוגמה, אחרי שאני מגדיר טיימר מסוים לעורר פסיקה בקצב קבוע, אני אכתוב קוד זמני לפסיקה הזו שמנדנד פין פלט, כדי שאוכל לראות בעזרת סקופ או לוג'יק אנלייזר שההגדרה היתה נכונה ושהפסיקה אכן מתעוררת בקצב הנכון. בדיקות כאלה מחייבות אותי גם לעצור באמצע התנופה של כתיבת הקוד, כך שיש הרבה השלמות שצריך לעשות אחרי שהבדיקה הסתיימה.
צורת העבודה הזו ממזערת טעויות מסוגים מסוימים, אבל היא גררה בעיות אחרות: גיליתי שלעתים קרובות מדי אני שוכח למחוק את הקוד הזמני (או, מה שעוד יותר גרוע, חלק ממנו), או שוכח להשלים משהו, מה שיוצר באגים חדשים. כדי למנוע אותם, בכל פעם שאני כותב קוד זמני, אני מתחיל אותו בהערה כזו:
// TEMP TEMP
ומפריד אותו בשורות רווח משאר הקוד, כדי שאדע למה בדיוק ההערה מתייחסת. אחרי סיום הבדיקה, ולקראת סיום כתיבת הקוד כולו, אני מחפש בטקסט את המילה "TEMP" ומוחק את כל הקודים הזמניים.
באופן דומה, כשאני יודע שאצטרך לכתוב בהמשך קוד שעושה משהו, אני כותב מה צריך לעשות בהערה כזו:
// TODO TODO // ...
כש-TODO זה כמובן To do. אחרי הבדיקות, ולקראת הסיום, אני מחפש גם את הטקסט "TODO" ומשלים את החסר.
כל זה אולי נראה טריוויאלי, ואף על פי כן, כשמדובר בקוד של כמה מאות או אלפי שורות, זה באמת עובד ועוזר.
למה אני כותב כל מילה פעמיים? זה מפני שבלהט הרגע, אני עלול להקליד את מילת המפתח בצורה שגויה, למשל TMEP במקום TEMP, ואז אפספס אותה בחיפוש הטקסט. כתיבה כפולה מפחיתה את הסיכוי לתקלה שכזו.
האם גם אתם משתמשים בשיטות לצמצום באגים? שתפו בתגובות!
אני משתמש ב-TODO מאז ומעולם ובדרך כלל מוסיף המשך של מה שצריך לעשות, כמו שלמשל למחוק את החתיכה של קוד.
התוכנה שאני משתמש בה מדגישה את המילה TODO, כך שכשאני מוסיף אותה מייד אפשר לראות אם כתבתי אותה נכון כדי שאפשר יהיה למצוא אותה בהמשך.
רוב ה-Editors שהשתמשתי עד עכשיו מאפשרים להוסיף Rules להדגשה של מילה כזו או אחרת, כך שאפשר להוסיף את זה לכל מני תוכנות…
כן, כמובן שההערה TODO מלווה גם בתיאור כלשהו, אחרת זה באמת יהיה חסר טעם.
באופן אישי אני לא אוהב להתעסק יותר מדי עם התאמות אישיות, אבל מי שזה נוח לו, זה בהחלט יכול להיות כלי שימושי למלחמה בבאגים.