בעיה בC# - עמוד 2 - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

בעיה בC#


alonezer

Recommended Posts

אם כבר מדברים על סגנון כתיבה אז הנה דעתי הראשונית:

לי זה נראה מכוער ומיותר לחלוטין, וגם מסבך את הזרימה. goto מ-case X ל-case Y, ואז goto מ-case Y ל-case Z וכו'. ממש ספגטי, ובמקרה שיהיה באג או שמישהו יערוך את הקוד ויוסיף באג, יהיה קשה למצוא אותו.

קישור לתוכן
שתף באתרים אחרים

עם שבירה קצת שונה של השורות זה לא הרבה יותר גרוע מ-fall through סטנדרטי ב-C.

(לא שאני חושב ש-fall through הוא רעיון טוב מדי באופן כללי(חוץ מהמקרה של לייבלים מרובים לבלוק קוד אחד)).

קישור לתוכן
שתף באתרים אחרים

עם שבירה קצת שונה של השורות זה לא הרבה יותר גרוע מ-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;
};

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...