סטנדרטים לקוד – Coding standards

פעם הסתכלתם על קוד של מתכנת אחר ולא אמרתם “איזה קוד לא מובן”? אז סטנדרטים לקוד (coding standards) באים לפתור בדיוק את זה.

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

אם אתם ברגע זה שואלים את עצמכם למה זה טוב? תוך כמה דק’ אתמצא בקוד של המתכנת הנ”ל והכל יבוא על מקומו בשלום.

הנתונים מלמדים שבין 40% ל 80% של עלות לפיסת תוכנה הולכת לתחזוקה, לכן שווה לחשוב על דרכי התייעלות לשלב זה.

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

סוגי סטנדרטים

לכל שפה יש סטנדרטים משלה וכן גם באותה שפה יש הרבה וריאציות שיכולות להשתנות בין סוגי פלטפורמות שונות, בPHP הולכים אחר PSR, פירוש PHP Standard Recommendation.

PHP code sniffer

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

התקנה

יש דרכים שונות להתקין את phpcs אני בד”כ משתמש בcomposer, ע”מ להתקין ברמת פרוייקט צריך להוסיף את phpcs לcomposer.json ע”י הפקודה:

התוצאה הסופית בקובץ composer.json:

כעת ע”מ לוודא שהותקן כמו שצריך:

הגדרת סטנדרט

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

לאחר הרצת הקוד נקבל פלט בסגנון הזה:

באותה דרך ניתן גם לבדוק תיקייה בצורה רקורסיבית:

מדריך רחב על השימוש ניתן למצוא כאן

שימוש בחיי הפיתוח

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

אפשר להכניס את הבדיקות בכמה שלבים:

  • אינטגרציה לIDE ע”מ לקבל אזהרות ושגיאות כבר בזמן כתיבת הקוד, החלק הזה חשוב כדי למנוע תסכול של המתכנת שמגלה שצריך לתקן מאות שורות קוד בדיעבד, כאן יש דוקומנטציה לphpstorm
  • הרצת בדיקות ע”י git hook בpre-commit, במידה ויש שגיאות נכשיל את הcommit של המפתח ונציג את השגיאות
  • למיטיבי לכת- יצירת build יומי (למשל ע”י Jenkins) ובדיקת התכולות שנדחפו, במידה ויש שגיאות הbuild יכשל

בפוסט הבא אדגים איך ניתן להכניס את הבדיקות לpre-commit וכן אסביר על תוכנה נוספת שמגיעה לצד הphpcs שמטרתה לתקן את רוב השגיאות בצורה אוטומטית.

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *