התמונה הגדולה

פיתוח מונחה עצמים ב JavaScript הוא טרנד חדש. למרות שטכנולוגית לא היתה מניעה משימוש בפרדיגמה זו כבר מהימים הראשונים של השפה, בפועל המעבר המסיבי בתעשייה לפיתוח מונחה עצמים החל בשנת 2008 והתגבר לקראת השנים 2010-2012.

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

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

1. יותר קוד

הגרף הבא מתאר את גודל קוד ה JavaScript הממוצע שנשלח לגולשים בין 2010 ל 2016. קל לראות את העליה בגודל הקוד שנשלח. זכרו שמדובר בקוד מכווץ ולכן ההפרש בגודל הקוד האמיתי כנראה גדול בהרבה.

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

מעבר ליישומי עמוד-יחיד כדי לשפר את ביצועי האתר ולצמצם זמני מעבר בין עמודים, הביא למעבר חלק ניכר מהעבודה מצד השרת לצד הלקוח, והתוצאה יותר קוד JavaScript לטפל בנושא מעברי עמודים ו Ajax.

יכולות משודרגות של הדפדפנים הביאו לכך שמתכנתים רצו להשתמש ביכולות החדשות, מה שיצר עמודים מורכבים יותר ושוב עודף קוד.

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

2. דפדפנים חדשים

סוף העשור הראשון הביא את מהפכת ה Mobile וסימן סוף עידן עבור דפדפן Internet Explorer. אתרים שנכתבו ל Mobile לא נפתחו טוב בדפדפן זה ואתרים ישנים שהותאמו ל IE לא עבדו טוב על Mobile. אתרים רבים שודרגו והותאמו וכתוצאה מכך החלו לעבוד גם על דפדפנים מתחרים (כדוגמת Firefox ו Chrome).

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

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

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

3. מובייל

רבות נכתב על האייפון ששינה את העולם ב 2007. הכל נכון והשפיע במיוחד על אוכלוסיית מפתחי ה JavaScript: הפיצול בין אייפון לאנדרואיד הביא לפיצול גם בטכנולוגיות לפיתוח אפליקציות. לאייפון כותבים בשפת תכנות שנקראת Obective C ולאנדרואיד ב Java.

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

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

ספריות קוד כדוגמת Ionic מציעות ממשק תכנותי מלא ליישומי Web שנראים כמו אפליקציות. הקוד של ספריות אלו כתוב בשיטת Object Oriented ולכן כדי לעבוד אתן יש להבין את הפרדיגמה.

4. לסיכום

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

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


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

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