אני רוצה להתייחס היום לנושא שמטריד אותי כבר הרבה זמן - המילים והשמות שאנחנו משתמשים בהם בפיתוח תוכנה.
לדעתי הבעיה המרכזית היא הקשר, הרופף בדרך כלל, בין שמות פנימיים של רכיבי המערכת לאיך שהם מוצגים למשתמש. אתחיל מדוגמא קטנה (אין כל קשר בין הדוגמאות לשום מציאות): פיתחתם חלון סטנדרטי שנקרא Options. איך ייקרא המודול וה-class שמממש את הפונקציונליות? Settings? Configuration? Preferences? Options? התשובה היא, כמובן, שזה תלוי. זה תלוי למשל האם אותו בן אדם מפתח גם את ה-UI וגם את ה-backend - במקרה כזה עולים הסיכויים של ה-Options להיות גם במימוש. אם מישהו אחר פיתח את התשתית לפני כחודשיים לפני תכנון ה-UI, יש סיכוי טוב שזה יהיה משהו אחר.
כן, תגידו, יש פה איזו בעיה קטנה והמתכנתים כבר יסתדרו. זה נכון כמובן עד השלב שהכתב הטכני שכותב את התיעוד מדבר בטעות עם איש ה-backend ולא אם איש ה-UI ובסוף הלקוחות מתלוננים שאין להם מושג איפה נמצא כפתור ה-Configuration.
הסיפור כמובן מסתבך כאשר נוצר בתוכנה שילוב מופלא של גם options גם settings וגם configuration. אין דרך טובה יותר לבלבל את המשתמש עם 2 או 3 מקומות שבהם אפשר להגדיר הגדרות, במיוחד עם מקום אחד משפיע על משמעות ההגדרות שנתנו במקום אחר. אלא אם כן קוראים לו super options.
מקרה אחר שבו מתנתק הקשר בין שפת המשתמש לשפת המפתחים הוא העבודה המבורכת שמישהו עשה וסידר את מושגי האפליקציה ללקוח. כבר לא כתוב ב-UI שאפשר לבצע את אלגוריתם "rakefet", שזה השם שנתן האלגוריתמאי כאשר התבונן בחלון, (או "weekly" או כל דבר אחר) אלא "ניתוח הרכישות באתר לפי ימי השבוע" (רצוי באנגלית). יופי, המשתמש כבר כמעט מרוצה. אבל הרקפת הזאת או ה-weekly לא הגיעו משום מקום. הם מושג שהשתרש בצוות הפיתוח וכבר נכנס לעומק הקוד, בשמות של מודולים, classes ופונקציות.
מרוצים מעבודת ה-UI המופלאה אתם נוסעים ללקוח להציג את פרי עמלכם. המנהל עומד ליד הלוח והאיש הטכני מפעיל את התוכנה. הלקוח מתעניין ביכולת ניתוח הרכישות באתר ואז המנהל אומר משהו כמו "Yossi, please do me weekly". אולי כבר עדיף היה שזה יהיה rakefet.
התזה שלי היא שלכל דבר צריך לקרוא בשמו, ואם מה שהוא עושה משתנה, או משנים את שם הפעולה ללקוח, צריך לעשות refactoring ולשנות גם את המושג במסמכים ובקוד. אפשר להיות קפדנים או סלחנים, תלוי בסיטואציה ובשינוי, אבל העיקרון צריך להיות ברור: האדם ניחן ביכולת לתת שמות, ולכן לכל דבר צריך לקרוא בשמו ההגיוני.
העיקרון הזה תקף לא רק בממשק בין ה-UI ל-backend. הוא תקף בכל תכנון, פיתוח או review. אם אתם רואים class ששמו WeeklyDataAnalyzer אבל כל מה שהוא עושה זה לכתוב את התוצאות לקובץ, צריך לשנות לו את השם למשהו כמו AnalysisResultsReporter או כל שם אחר שמתאר את הפעולה.
ומה קורה כאשר אין לנו שם טוב ל-class או למודול? מה אם ה-class גם מכיל את האלגוריתם וגם כותב את התוצאות? במקרה שאין שם טוב ל-class ייתכן שמדובר בבעית design וצריך לשקול לשנות (או לפצל) את ה-class ולהגדיר מחדש מה הוא עושה ואת הממשקים בינו ל-classes אחרים.
אני לא טוען שתמיד תכנון כזה יהיה מוצלח. דרישות הפרויקט משתנות ואנחנו נוטים "לשנות רק קצת" את הקוד כדי לתמוך בעוד איזה feature קטנטן. מה שצריך לעשות כדי שתהיה תקשורת טובה בין ה-backend ל-UI וללקוח היא שכולם ידברו באותה שפת מושגים, והמושגים האלה יהיה הגיוניים.
ורגע של עברית: יש כמובן גם את פניני העברית הטכנולוגית כמו למשל הפוסט מהבוקר (http://cafe.themarker.com/view.php?t=542974) שמביא כמה דוגמאות. גם אני משתמש ב"לקמפל" וב"לדבג" אבל עם מילים כמו "לקסטם" אני כבר מרגיש אי נוחות מסויימת. אז האם אצלכם "to parse" מתורגם ל"לפרסס" או "לפרסר"?
הוספת תגובה על ""מילים מילים, הוא בדה ממוחו הקודח""
נא להתחבר כדי להגיב.
התחברות או הרשמה