- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
string status = ProcessData("db1");
if (status == "ERROR") goto ErrorOccured;
status = ProcessData("db2");
if (status == "ERROR") goto ErrorOccured;
status = ProcessData("db3");
if (status == "ERROR") goto ErrorOccured;
if (status == "OK") goto NoError;
ErrorOccured:
tran.Rollback();
return status;
NoError:
tran.Commit()
поистине индусский кодЪ
Я за запрещение показа этого куска кода. Он вызывает желание убиться апстену.
А собственно, что тут такого крамольного? Код совершенно понятен любому его читающему ...
Или по принципу - один баран сказал, что "goto" - это плохо, то и все другие тоже блеют на этой же ноте?
только бараны не понимают, что goto плохо.
студентик небось какой-нибудь накотал в ускоренном темпе лишь бы впарить преподу с надеждой что последний и смотреть не станет
Написали ж для умников
[quote=Говногость](не забываем, что C#)[/quote]
Плохо тут не само goto, а использование обработки ошибок через коды возврата в языке, в котором существуют исключения и они часто бросаются из рантайма.
Ещё плохая обработка этих кодов. Если первые два вызова ProcessData верут "UNKNOWN", это сойдёт за "OK", третий сойдёт за "ERROR"
Ещё плохо использование строк в качестве кодов возврата.
Кроме понятности, от кода требуется работоспособность и поддерживаемость.
В goto, разумеется, ничего плохого нет. Однако, если этот код нписать как он должен быть написан, goto здесь не нужен.