Don't Get Lazy
כשמתכנתים מתחיל להתעצל, דברים רעים מתחילים לקרות. בהתחלה כותבים איזה
Anoynmous Method, אחר כך מזדרזים ומשרבטים Extension Method ... ובעיקר, הופכים את הקוד לפחות קריא ונוח לתחזוקה.
אחד ה-"Horror'ים" שכדאי להמנע ממנו, הוא השימוש בפונקציות "הנוחיות"
השונות שמספקת לנו מחלקה Array. אני מתכוון לכל הפונקציות שמקבלות מצביע
לפונקצית עזר כלשהו, שמופעלת על כל איברי המערך. למשל Find, ForEach,
TrueForAll... וכדומה.
במבט מהיר, הפונקציות האלה יכולות להראות נוחות ושימושיות. אחרי הכל, חסכנו כתיבה של לולאה! או בהערכה חופשית: חסכנו לעצמנו
גג עוד
4 שורות קוד. ומה קיבלנו בתמורה? קוד שבזמן דיבאג יהיה הרבה פחות נוח
לדבג. בואו נאמר שיש איזשהיא בעיה ב-Predicate שהעברנו, או שאנחנו סתם
מדבגים דרך איזשהו קטע קוד, ואנחנו רוצים לראות איך Find מחפש בתוך המערך
שלנו. אבל מה, בגלל שחסכנו 4 שורות קוד, אין לנו בלוק קוד נחמד ונוח של
לולאה בה אנחנו יכולים בקלות ובבהירות לעבור איבר-איבר במערך ולראות באמת
מה קורה עם כל אחד מהם. במקום זה, אנחנו צריכים להציב breakpoint חדש בתוך
פונקציות העזר שהגדרנו, כדי שנוכל לתפוס כל הפעלה נפרדת שלה על כל איבר
במערך (ושמן הסתם לא נדע בדיוק באיזו איטרציה מדובר, אבל זה כבר.. מינורי).
בשורה התחתונה, כן. חסכנו 4 שורות קוד ... אבל באיזה מחיר? במחיר של הוספת
קושי חסר טעם על עבודת הדיבאג. כך שבסופו של דבר, אנחנו רק מפסידים. במקום
זה, עדיף להפסיק להתעצל לרגע, וכן, להוסיף את הכמה שורות האלה עבור הלולאה
שלנו. הקוד יהיה אותו קוד בסופו של דבר, אז למה שלא נקל מעט על עצמנו על
הדרך? :)