|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Max Ischenko 2:5020/400 10 Dec 2001 14:19:59 To : "Serguei Khvatov" Subject : Re: goto нет в tcl -------------------------------------------------------------------------------- Serguei Khvatov wrote: AD>>> Классический пример такого кода - функция, в нескольких местах AD>>> которой присутствуют проверки нетривиальных условий (которые AD>>> не влезают в понятие switch), и условный переход в сторону AD>>> конца функции, перед которым надо выполнить еще пачку действий AD>>> (например, очистку). Да, это моделируется путем флагов (и AD>>> приводит к непонятности кода), либо путем дублирования пачки AD>>> действий (что совсем плохо по понятным причинам), может быть еще AD>>> исключениями, если они есть в языке, хотя сюда притягиваются AD>>> за уши. В _данном_ случае goto короче, понятнее и потенциально AD>>> безопаснее. AK>> Блин. Выносишь сложные условия в отдельные функции, повторяющиеся AK>> куски кода туда же. Если функция длинее 25 строк -- разрезаешь ёё AK>> на части. SK> ...и передаёшь им всем гору параметров. Ещё можно обрамить функцию SK> циклом, взгромоздить в него switch по переменной состояния. Только SK> всё это через задницу. Ладно гнать. Как раз на тикле можно сделать как угодно удобно. Все-таки почти лисп: proc temp-chdir {dir block} { set cd [pwd] cd $dir uplevel $block cd $cd } man n upvar man n uplevel -- The first 90% of the code accounts for the first 90% of the development time. The remaining 10% of the code accounts for the other 90% of the development time. --- ifmail v.2.15dev5 * Origin: somewhere in space... (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/16181d9afb2c8.html, оценка из 5, голосов 10
|