- 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()
guest 27.02.2009 16:13 # 0
поистине индусский кодЪ
guest 27.02.2009 18:26 # 0
guest 27.02.2009 22:40 # 0
guest 28.02.2009 00:06 # 0
Я за запрещение показа этого куска кода. Он вызывает желание убиться апстену.
guest 28.02.2009 01:56 # +3
А собственно, что тут такого крамольного? Код совершенно понятен любому его читающему ...
Или по принципу - один баран сказал, что "goto" - это плохо, то и все другие тоже блеют на этой же ноте?
guest 28.02.2009 05:08 # −4
только бараны не понимают, что goto плохо.
guest 28.02.2009 09:50 # 0
студентик небось какой-нибудь накотал в ускоренном темпе лишь бы впарить преподу с надеждой что последний и смотреть не станет
guest 28.02.2009 10:02 # +3
Написали ж для умников
[quote=Говногость](не забываем, что C#)[/quote]
Плохо тут не само goto, а использование обработки ошибок через коды возврата в языке, в котором существуют исключения и они часто бросаются из рантайма.
Ещё плохая обработка этих кодов. Если первые два вызова ProcessData верут "UNKNOWN", это сойдёт за "OK", третий сойдёт за "ERROR"
Ещё плохо использование строк в качестве кодов возврата.
Кроме понятности, от кода требуется работоспособность и поддерживаемость.
В goto, разумеется, ничего плохого нет. Однако, если этот код нписать как он должен быть написан, goto здесь не нужен.