מיקרו אופטימיזציות
שימו לב לפעולת ||= בקוד של טובי כאן:
$token_map ||= {
# semantic foreground styles
# '{text}' => "\e[39m",
'{text}' => "\e[39m",
'{dim_text}' => "\e[90m",
'{h1}' => "\e[1;33m",
'{h2}' => "\e[1;36m",
'{highlight}' => "\e[1;33m",
# resets/util
'{reset}' => "\e[0m", '{reset_bg}' => "\e[49m",
# screen/cursor
'{clear_screen}' => "\e[2J", '{clear_line}' => "\e[2K", '{home}' => "\e[H",
'{hide_cursor}' => "\e[?25l", '{show_cursor}' => "\e[?25h",
# Selection background: faint
'{start_selected}' => "\e[6m",
'{end_selected}' => "\e[0m"
}
זה מגיע מפרויקט צד בשם try:
https://github.com/tobi/try/blob/main/try.rb
אני די בטוח שהוא לא השווה סטטיסטיקות של זמני ריצה או ניסה לטפל בתלונה ממשתמשים. ההבדל בין השמה רגילה ל ||= הוא שולי בהקשר הזה.
טובי משתמש בהשמה חד פעמית כי זה Best Practice. כי הערך של המפה לא משתנה ואין טעם ליצור אותה מחדש כל פעם שמפעילים את הפונקציה. אני מהמר שהוא לא רצה להגדיר את המפה הזאת מחוץ לפונקציה או ליצור קלאס כי זה נוח שהכל יושב בפונקציה אחת.
בשביל המשחק מחקתי את ההגדרה של token_map וביקשתי מ AI להשלים אותה. ג'יפיטי5 השלים עם האופטימיזציה, ג'מיני וקלוד בלי.
האם יום אחד כל כלי ה AI ישתמשו באופטימיזציה זו כברירת מחדל? לדעתי לא, וזה לא משנה. ה AI שם בשביל לעזור. הבנת החשיבות של מתי דברים נוצרים ושמירה לא לעשות עבודה מיותרת תמיד תישאר העבודה שלנו.