בשביל מה יש הערות
הערה היא טקסט בקוד המקור שהמהדר של C++ מתעלם ממנו לגמרי. היא אף פעם לא מגיעה לתוכנית המהודרת: היא קיימת רק בשביל בני אדם שקוראים את הקוד. משתמשים בהערות כדי להסביר למה משהו נעשה בדרך מסוימת, כדי להשאיר תזכורות, או כדי לנטרל קוד זמנית בלי למחוק אותו.
בהמשך לתחביר של C++ שכבר מוכר לכם, הערות הן אחד הדברים הבודדים שאפשר לשים כמעט בכל מקום, והמהדר פשוט ידלג עליהן. ב-C++ יש שני סוגים: הערות של שורה אחת (//) והערות בלוק של כמה שורות (/* */).
הערות של שורה אחת
שני לוכסנים (//) פותחים הערה שנמשכת עד סוף השורה הנוכחית. המהדר מדלג על כל מה שבין ה-// לבין סוף השורה.
שימו לב שההערה השנייה חולקת שורה עם קוד אמיתי. כל מה שלפני ה-// עדיין רץ; רק החלק שאחריו נמחק מעיני המהדר. זה סגנון ההערות הנפוץ ביותר להערות קצרות.
הערות בלוק של כמה שורות
כשההערה שלכם משתרעת על כמה שורות, הערת בלוק נקייה יותר מאשר להוסיף // בתחילת כל שורה. הערת בלוק מתחילה ב-/* ומסתיימת ב-*/. כל מה שביניהם, לא משנה כמה שורות, מתעלמים ממנו.
תווי ה-* המיושרים לאורך תחילת השורות הם מוסכמת סגנון, לא כלל. החלקים היחידים שבאמת חשובים הם ה-/* הפותח וה-*/ הסוגר. הערת בלוק יכולה אפילו לשבת באמצע שורה: int x = 5 /* width */ + 2; תקין לגמרי, אבל זה נהיה קשה לקריאה מהר מאוד.
הפיכת קוד להערה
הערות הן הדרך המקובלת לנטרל קוד בזמן ניסויים, בלי למחוק אותו. השתמשו ב-// לשורה אחת, או בהערת בלוק כדי לכבות כמה שורות בבת אחת.
הריצו את זה ותראו שרק שתי שורות ה-"runs" מודפסות. פקודות ה-cout שהפכו להערה בלתי נראות למהדר.
מלכודת הקינון
מלכודת שמפילה מתחילים: הערות בלוק לא מקוננות. ה-*/ הראשון סוגר את ההערה, לא משנה כמה /* הופיעו לפניו. לכן אי אפשר לעטוף בלוק /* ... */ בתוך בלוק /* ... */ אחר: ה-*/ הפנימי מסיים את הכול, וכל מה שאחריו הופך שוב לקוד (בדרך כלל שגיאת תחביר).
/* Trying to disable a region that already has a block comment...
int n = 10; /* the width */
cout << n;
*/ // the first */ above already closed the comment - this line is now stray code
ההערה החיצונית נגמרת ב-*/ שאחרי the width, כך שהשאר כבר לא בהערה והמהדר נתקע על ה-*/ שבסוף. כשצריך לנטרל אזור שכבר מכיל הערות בלוק, השתמשו ב-// בכל שורה במקום זאת. רוב העורכים מחליפים מצב של הערות שורה על פני בחירה שלמה בקיצור מקלדת אחד, וכך הבעיה נעלמת לגמרי.
הערות טובות מול רעש
הערה צריכה להסביר משהו שהקוד לא יכול להגיד בעצמו. הערות שרק חוזרות על הקוד מוסיפות עומס ונוטות להתיישן ככל שהקוד משתנה.
// Bad: just repeats what the code obviously does
i = i + 1; // add one to i
// Better: explains the reason, which the code can't show
retries++; // back off and retry; the API is rate-limited at 5 req/sec
שאפו להפוך את הקוד לקריא בעזרת שמות ברורים ומבנה טוב, ושמרו את ההערות ללמה: כוונה, פשרות, מקרי קצה וקישורים להקשר. אם אתם מוצאים את עצמכם כותבים הערה כדי להסביר שורה מבלבלת, זה לרוב רמז לשנות שם של משתנה או לפצל את הלוגיקה לפונקציה עם שם טוב.
הבא בתור: משתנים
עכשיו כשאתם יודעים להוסיף הערות לקוד, אבן הבניין הבאה היא לאחסן בו נתונים. העמוד הבא עוסק במשתנים: איך מצהירים עליהם, אילו טיפוסים מובנים הם מחזיקים, ואילו כללים C++ אוכפת כי היא שפה עם טיפוסים סטטיים.
שאלות נפוצות
איך כותבים הערה ב-C++?
השתמשו ב-// להערה של שורה אחת: כל מה שבא אחריו באותה שורה המהדר מתעלם ממנו. להערה שמשתרעת על כמה שורות, עטפו את הטקסט בין /* ל-*/. לדוגמה: // זו הערה או /* זה משתרע על כמה שורות */.
מה ההבדל בין // ל-/* */ ב-C++?
// הופך להערה את שארית השורה בלבד, ולכן צריך אחד בכל שורה. /* */ היא הערת בלוק שמתחילה ב-/* ונמשכת עד ה-*/ הבא, גם לאורך הרבה שורות. השתמשו ב-// להערות קצרות בתוך השורה וב-/* */ כדי לנטרל בבת אחת קטע של טקסט או קוד.
אפשר לקנן הערות ב-C++?
לא. הערות בלוק (/* */) לא מקוננות: ה-*/ הראשון סוגר את ההערה, לא משנה כמה /* הופיעו לפניו. כדי לנטרל אזור שכבר מכיל הערות בלוק, שימו // בכל שורה במקום זאת (רוב העורכים עושים את זה בקיצור מקלדת אחד).