אינטרנט ישראל
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
ראשי » חדשות אינטרנט » אז למה מתכנתים שמשתמשים ברווחים במקום טאבים מרוויחים יותר?

אז למה מתכנתים שמשתמשים ברווחים במקום טאבים מרוויחים יותר?

רן בר-זיק יוני 18, 2017 7:07 am 5 תגובות

במחקר משכנע ומעמיק הוכח מעל לכל ספק שמתכנתים שמשתמשים ברווח בקוד שלהם מרוויחים יותר. הכל מגיע מה-Continuous integration

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.

לא מזמן התפשטה ברשת ידיעה מרעישה – מתכנתים שמשתמשים ברווחים מרוויחים יותר כסף.

רגע, מה?

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


if ('this_is' == /an_example/) {
  of_beautifier();
} else {
  var a = b ? (c % d) : e[f];
}

מאשר קוד כזה:


if ('this_is'==/an_example/){of_beautifier();}else{var a=b?(c%d):e[f];}

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

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

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

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

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

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

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

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

כשקראתי את המחקר, מיד הלכתי להסתכל על הקוד שלי. לא נעים לי לומר, אני בכלל לא זוכר איך עושים אינדנטציה כיוון שעורך הקוד (IDE) שלי עושה את זה עבורי. ברגע שאני יורד שורה חדשה, ההזחה מתבצעת באופן אוטומטי. זה קורה בכל סביבת עבודה שאני עובד עליה כיוון שבכל פרויקט אני יוצר מיד editorconfig. מדובר בקובץ קטן שקובע את ההגדרות של עורך הקוד. הוא תמיד מיושר עם הגדרות בדיקת הקוד הסטטית. בדיקת קוד סטטית היא בדיקה אוטומטית שבודקת את נראות הקוד – למשל רווחים לאחר סוגריים, הזחה מתאימה, שורה בין מתודה למתודה והגדרות רבות אחרות ומתקנת באופן אוטומטי את הקוד. קוד שלא כתוב לפי ההנחיות של בדיקת הקוד הסטטית לא יכול להיכנס למוצר/אתר/אפליקציה.
קוד שעובד לפי ההנחיות של בדיקת קוד סטטית (או לינט) נחשב לקוד איכותי יותר כיוון שגם אם 1,000 איש יעבדו עליו, הוא יראה כאילו אדם אחד כתב אותו – כלומר הוא מאוד נוח לקריאה. גם בדרך כלל בדיקת קוד סטטית עושה בדיקות אבטחה, ביצועים ועוד. לפיכך בדיקת קוד סטטית היא חלק קריטי מהתשתית של כל מוצר. כל מוצר איכותי הכוונה. לא מעט מתכנתים, במיוחד אלו שמייצרים מוצרים באיכות נמוכה לא מקפידים על בדיקת קוד סטטית. בטח ובטח לא בדיקת קוד סטטית כחלק מהליך Continuous integration (כלומר הליך של שילוב קוד חדש בקוד קיים).

כשאני יוצר פרויקט חדש או כותב קוד לפרויקט קיים, אני בדרך כלל לא שולט על הרווחים או הטאבים בקוד שלי, עניין הרווחים נקבע על ידי static code analysis. תהליך שרץ לפני שהמתכנת מכניס את הקוד שלו למוצר. ה-static code analysis מונע הכנסה של טאבים או רווחים. וברוב בדיקות הקוד הסטטיות ברירת המחדל היא הזחה באמצעות רווחים.

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

אלא אם כן אתם מאמינים במתאם ובנומרולוגיה ואז זה מאוד הגיוני ש'רווח' === 'רווחים'.

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.
חדשות אינטרנט

5 תגובות

  1. ראובן הגב יוני 18, 2017 בשעה 9:13 am

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

    • רן בר-זיק הגב יוני 18, 2017 בשעה 9:18 am

      כתבתי: ". וברוב בדיקות הקוד הסטטיות ברירת המחדל היא הזחה באמצעות רווחים." 🙂 כמובן שיש יוצאים מהכלל שיתעקשו על טאבים. אבל הרוב יזרמו עם ברירת המחדל.

  2. שלומי הגב יוני 18, 2017 בשעה 6:18 pm

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

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

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

    • שלומי הגב יוני 18, 2017 בשעה 6:44 pm

      אני אפשט את זה…
      כששואלים אותך "האם אתה משתמש בטאבים או רווחים?"
      אתה עונה לפי?
      – הכפתור במקלדת בו אתה משתמש להזחה
      – מה ה-IDE שומר לדיסק
      – מה נשמר ל-repository אחרי lintים על סוגיהם
      – אחר

      האם לדעתך כל מי שענה על השאלה ענה כמוך?
      כי אני לא בטוח בכלל…
      ואם לא – הרי הסקר לא בודק בפועל שום דבר, ותוצאותיו חסרות משמעות.
      Garbage in, garbage out

      • רן בר-זיק הגב יוני 24, 2017 בשעה 7:13 pm

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

השארת תגובה

ביטול

ללמוד ג'אווהסקריפט בעברית

ללמוד לתכנת ג'אווהסקריפט בעברית שגייס יותר משלוש מאות אלף שקל ולמעלה מ-2000 תומכים - בואו ללמוד עכשיו איך לתכנת.

רשימת הנושאים
  • מדריכים
    • ריאקט
    • טייפסקריפט
    • ECMAScript 6
    • ES20XX
    • Node.js
    • Express
    • רספברי פיי
    • Babel
    • docker
    • MongoDB
    • Git
    • לימוד MySQL
    • SASS
    • jQuery
    • CSS3
    • HTML 5
    • SVN
    • LESS
  • פיתוח אינטרנט
    • פתרונות ומאמרים על פיתוח אינטרנט
    • jQuery Scripts
    • jQuery למתקדמים
    • יסודות בתכנות
    • נגישות אינטרנט
  • חדשות אינטרנט
  • מידע כללי על אינטרנט
    • רשת האינטרנט
    • בניית אתרי אינטרנט
  • rss logo

    לכל המאמרים

    לכל המאמרים שפורסמו באינטרנט ישראל משנת 2008 ועד עכשיו.
  • rss logo

    RSS Feed

    משתמשים בקורא RSS? אם כן, עקבו אחרי אינטרנט ישראל באמצעות פיד ה-RSS!
    מה זה RSS?
  • Twitter logo

    עקבו אחרי בטוויטר

    בחשבון הטוויטר שלי אני מפרסם עדכונים מהירים על חדשות בתחום התכנות והיזמות, התרעות על מצבי חירום ורכילות בוערת על תחום הווב.
    מה זה טוויטר?
  • facebook like image

    ערוץ הטלגרם של אינטרנט ישראל

    בערוץ הטלגרם של אינטרנט ישראל אני מפרסם את הפוסטים של באתר וכן עדכונים טכנולוגיים נוספים.
    מה זה טלגרם?
  • github logo

    הפרויקטים שלי בגיטהאב

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

כל הזכויות שמורות לרן בר-זיק ולאינטרנט ישראל | מדיניות הפרטיות של אתר אינטרנט ישראל | אתר אינטרנט ישראל נגיש לפי תקן WCAG 2.0 AA | הצהרת הנגישות של האתר | אבטחת מידע ודיווח על בעיית אבטחת מידע

גלילה לראש העמוד