פורסם 2008 בנובמבר 617 שנים מתכנתים אמיתיים לא מפחדים להשתמש ב-goto.חוצמזה, במקרה הנ"ל, ובצורה ש-C# בנויה, אני לא רואה שום סיבה שלא להשתמש בזה.
פורסם 2008 בנובמבר 617 שנים אם כבר מדברים על סגנון כתיבה אז הנה דעתי הראשונית:לי זה נראה מכוער ומיותר לחלוטין, וגם מסבך את הזרימה. goto מ-case X ל-case Y, ואז goto מ-case Y ל-case Z וכו'. ממש ספגטי, ובמקרה שיהיה באג או שמישהו יערוך את הקוד ויוסיף באג, יהיה קשה למצוא אותו.
פורסם 2008 בנובמבר 717 שנים עם שבירה קצת שונה של השורות זה לא הרבה יותר גרוע מ-fall through סטנדרטי ב-C.(לא שאני חושב ש-fall through הוא רעיון טוב מדי באופן כללי(חוץ מהמקרה של לייבלים מרובים לבלוק קוד אחד)).
פורסם 2008 בנובמבר 717 שנים עם שבירה קצת שונה של השורות זה לא הרבה יותר גרוע מ-fall through סטנדרטי ב-C.(לא שאני חושב ש-fall through הוא רעיון טוב מדי באופן כללי(חוץ מהמקרה של לייבלים מרובים לבלוק קוד אחד)).fallthrough, עם כל הבעיות שבו (ויש), עדיין לא מייצר את הבלאגן ב-program flow שמייצר ה-goto במקרה זה. fallthrough תמיד מגיע ל-case הבא. תמיד. ה-goto בתוך case זז קדימה או אחורה, ואם משנים את סדר ה-case-ים אז גם הוא משתנה. התוצאה - קוד שקשה לתחזק ולעקוב אחריו.break יותר נפוץ מ-fallthrough. לדעתי הבעיה העיקרית ב-fallthrough ב-C זה שהוא ברירת המחדל. אם בשביל לעשות את זה היה צריך לרשום keyword מיוחד, ובברירת המחדל ה-case היה מסתיים כמו היום עם break, זה היה מונע 90 אחוז מהבאגים לדעתי. (מלבד כמובן, אלא שנגרמים עקב שימוש ב-switch במקום משהו חכם יותר).// example with theoretical implicit break and explicit fallthrough;switch (foo){ case BAR: x = 4; /* implicit break! */ case BOO: x = y; /* implicit break! */ case BEE: printf("dyslectics have more fnu!\n") ; /* implicit break! */ case BAZ: x = 3; fallthrough; case BLA: y = 3; printf("wow!\n"); /* implicit break! */ default: x = 0;};
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.