פניני קוד

מדי פעם יוצא לי לתחזק התקנת PHP Nuke ממש ישנה, ואני כל פעם מופתע מחדש מה”איכות” של הקוד: PHP Nuke הוא הדוגמה לכל מה שגרוע ב-PHP – זו טכנולוגיה לא רעה שהביאה את תכנות ה-Web להמוני אנשים שלא היתה להם דרך אחרת להתחיל, אבל זה גם הצד הרע שלה – PHP הביאה את התכנות להמוני אנשים שאין להם מושג בתכנות ואז אתה מקבל דברים כמו קוד שמביא פריטים מעץ הירארכי בעזרת הפונקציות GetKids ו-GetBabies (שקוראות אחת לשניה בלולאה), או את הקוד המבריק הזה:


if ( (isset($tid)) && (!isset($pid))) {
// do something
} elseif ( ($mainfile) xor ( ($pid==0) AND (!isset($pid)))) {
// do something else
} else {
if(!isset($pid)) $pid=0;
// do a third thing
}

כל הקוד הזה מטופש, אבל הכי משך את עיני החלק האחרון של ה-if השני: “אם pid שווה לאפס וגם אינו מוגדר” 2 .

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

זה לא שחסרה למרבית מתכנתי ה-PHP השכלה בסיסית במדעי המחשב – חסרה להם יכולת בסיסית לקרוא מדריכים, להבין אותם ולהסיק מסקנות, או חמור מזה – יכולת להסתכל על קוד ולהגיד “איכס! אפשר לכתוב את זה יותר טוב”.

  1. מדי פעם יוצא לי לתחזק התקנת PHP Nuke ממש ישנה, ואני כל פעם מופתע מחדש מה”איכות” של הקוד: PHP Nuke הוא הדוגמה לכל מה שגרוע ב-PHP – זו טכנולוגיה לא רעה שהביאה את תכנות ה-Web להמוני אנשים שלא היתה להם דרך אחרת להתחיל, אבל זה גם הצד הרע שלה – PHP הביאה את התכנות להמוני אנשים שאין להם מושג בתכנות ואז אתה מקבל דברים כמו קוד שמביא פריטים מעץ הירארכי בעזרת הפונקציות GetKids ו-GetBabies (שקוראות אחת לשניה בלולאה), או את הקוד המבריק הזה:


    if ( (isset($tid[]

  2. שזה בעצם אותו הדבר ב-PHP, בגלל שדברים לא מוגדרים שווים (אך לא זהים) לאפס. בשפות אחרות שבהן דברים לא מוגדרים לא שווים לכלום יתכן שזה תנאי “וגם” שאי אפשר לממש אותו[]

Leave a Reply