Форум: "Прочее";
Текущий архив: 2010.11.14;
Скачать: [xml.tar.bz2];
ВнизHowTo: Полностью избавиться от меток. Найти похожие ветки
← →
Darth Revan (2010-07-30 21:41) [0]Многие понимают, что использование GoTo сильно влияет на качество кода. Но, тем не менее, всё равно он продолжает использоваться!
В FreePascal есть даже целая команда, запрещающая использование GoTO, но смысл? Гораздо лучше сделать команду разрешающую GoTo, а лучше - совсем его запретить, как в развитых языках. Да, да, GoTo понижает Delphi перед другими языками, что является непосредсвенной причиной его упадка.
Большиство программистов уже признало, что между количеством меток в коде и профессионализмом создателя кода есть обратная зависимость. Но непрофессионалы утверждают, что в малом коде это не страшно. Но мы-то знаем, что малый код со временем растёт, а если и нет, то у программиста может создастся привычка ставить метки.
Сейчас я рассмотрю самый страшный способ использования меток. Он страшный из-за того, что его используют даже те, кто метки не любит, тем самым переходя на страшный путь быдлокодера:procedure Some;
label
done;
begin
1 часть кода
if X=Y then
goto done;
2 часть кода
done:
3 часть кода
end;
Здесь из первой части кода производится GoTo во вторую, производя действия перед выходом из процедуры/функции. Но ведь есть и более кошерный способ делать что-либо из 3 части кода перед выходом из процедуры/функции!procedure done;
begin
3 часть кода
end;
procedure Some;
label
done;
begin
1 часть кода
if X=Y then
begin
done;
exit;
end;
2 часть кода
end;
Конечно, у этого способа есть недостатки, но они легко решаются. Например, если сразу несколько процедур/функций делают что-либо перед выходом, то появляются проблемы. Чтобы этого избежать, пишите не procedure done, а procedure Some_done. Т.е. с именем процедуры/функции.
Вот статья и закончилась. Надеюсь, она Вам помогла поверить, что можно обойтись без меток, и никогда их не использовать.
Помните, Delphi интересней, чем Вам кажется...
← →
Darth Revan (2010-07-30 21:41) [1]Данная статья имеет две цели:
1. Показать, что GoTo, иногда, использовать лаконичнее, чем модульную систему.
2. Показать, как легко играть сознанием, если правильно поиграть на фактах. В этой статье это не сильно выражело из-за слишком большой абсурдности.
Будьте бдительны, когда смотрите новости, ибо там ещё играет интонация.
← →
KilkennyCat © (2010-07-31 00:24) [2]что это было?
← →
Darth Revan (2010-07-31 00:26) [3]А я ведь написал во втором посте.
← →
KilkennyCat © (2010-07-31 00:27) [4]что, еще и второй пост надо читать?
а вопрос-то в чем?
что не получается-то?
← →
Sha © (2010-07-31 01:49) [5]> Darth Revan
Религия не добавляет к программированию ничего нового.
← →
Германн © (2010-07-31 01:54) [6]
> Вот статья и закончилась. Надеюсь, она Вам помогла поверить,
> что можно обойтись без меток, и никогда их не использовать.
>
>
> Религия не добавляет к программированию ничего нового.
+1
← →
antonn (work) (2010-07-31 10:44) [7]вчера ковырял асмовскую процедурку, насмотрелся этих "меток"... <блюющий смайлик>
← →
int64 (2010-07-31 11:06) [8]
> Да, да, GoTo понижает Delphi перед другими языками, что
> является непосредсвенной причиной его упадка.
ААААААА!!! Теперь я знаю, почему Delphi загибаица.
← →
Pavia © (2010-07-31 12:21) [9]Not лучше добавить и все становится на место.
← →
Darth Revan (2010-07-31 12:36) [10]Как я понял, второй пост никто не читает.
Мораль: всё хорошо в меру!
← →
turbouser © (2010-07-31 12:56) [11]
> Darth Revan (31.07.10 12:36) [10]
Вброс не удался :)
тема про гото уже 100500 раз обсуждалась
← →
Плохиш © (2010-07-31 14:05) [12]
> Darth Revan (30.07.10 21:41)
слишкам многа букаф...
← →
@!!ex © (2010-07-31 15:44) [13]на gamedev.ru есть подобный вброс.
Там довольно четко объясняется на примерах, что goto в ряде случае код УПРОЩАЕТ.
То есть, да, можно сделать конструкцию без goto, но есть ситуации, когда это только хуже сделает.
также надо понимать что exit, break и т.п. - суть завуалированные goto
← →
@!!ex © (2010-07-31 16:03) [14]Я сам goto не использую... предпочитаю более сложные конструкции, но без goto... это чисто моя религия.
← →
Доярка Иванова (2010-07-31 16:09) [15]Меткиэтакрута
← →
_Юрий (2010-07-31 16:52) [16]Да никто не использует эти ваши метки уже лет сто (или чуть меньше).
Так что проблема как таковая отсутствует.
Разве что в вузах до сих пор преподают? Они любят всякие древности
← →
Юрий Зотов © (2010-07-31 17:40) [17]Жара... бывает...
← →
картман © (2010-07-31 17:46) [18]вообще-то пост не про метки. И не о программировании. По крайней мере, не о программировании железяк.
> Юрий Зотов © (31.07.10 17:40) [17]
>
> Жара... бывает...
вот-вот
← →
Sha © (2010-07-31 17:56) [19]> _Юрий (31.07.10 16:52) [16]
> Да никто не использует эти ваши метки
Почему же? Я использую.
Из недавнего обсуждения.
Есть низкоуровневая часто используемая функция, например:function WideStrEnd(AString: PWideChar): PWideChar;
const
WIDE_NULL_CHAR = WideChar(#0);
begin
Result := AString;
while Result^ <> WIDE_NULL_CHAR do Inc(Result);
end;
Стоит переписать ее, отбросив религию, с использованием
goto или exit, если это увеличит скорость на 60% ?
Если стоит, то что выбрать:
функцию с двумя выходами (exit) или с одним (goto) ?
← →
Юрий Зотов © (2010-07-31 18:02) [20]> Sha © (31.07.10 17:56) [19]
Саша, не спорь. Мы все должны преклонить колени перед великим семнадцатилетним гуру со стажем программирования в несколько лет максимум.
Братья! Возблагодарим же Учителя, снизошедшего до нас и принесшего нам Истину!
← →
KilkennyCat © (2010-07-31 18:45) [21]Ом мани падме хум!
что в переводе означает: лучше бы он дал мне деньги.
← →
Anatoly Podgoretsky © (2010-07-31 19:25) [22]> @!!ex (31.07.2010 15:44:13) [13]
Объяснить мы можем что угодно, не проблема, нас не корми, а дай объяснить.
← →
Anatoly Podgoretsky © (2010-07-31 19:28) [23]> KilkennyCat (31.07.2010 18:45:21) [21]
Перевод неправильный.
Не учите меня жить, лучше помогите материально.
← →
Rouse_ © (2010-07-31 19:30) [24]
> antonn (work) (31.07.10 10:44) [7]
>
> вчера ковырял асмовскую процедурку, насмотрелся этих "меток".
> .. <блюющий смайлик>
Сравнение меток в асме и дельфи категорически неверный подход. :)
Проще скобки из лиспа выкинуть...
Да и в том-же асме можно достаточно гармонично написать функцию, практически не отличающуюся от привычных нам образцов винапи кода.
← →
vrem (2010-07-31 19:43) [25]давайте давайте, лихие мастера! к вам тут незнай как, но пробрался свежий посетитель. загнобите его, это же ваш сайт, чего это он пришёл :)
← →
Anatoly Podgoretsky © (2010-07-31 19:48) [26]И правда, нафига он к нам пришел, со своей глупой попыткой холивора, или как минимум с баяном? Чистый "незнай как"
← →
Rouse_ © (2010-07-31 20:19) [27]
> vrem (31.07.10 19:43) [25]
К чему вообще ты это сюда выплеснул?
← →
Юрий Зотов © (2010-07-31 20:20) [28]
> Anatoly Podgoretsky © (31.07.10 19:48) [26]
Это даже и не холивар, да и вообще к програмизьму отношения не имеет. Товаришчь хотел "показать, как легко играть сознанием, если правильно поиграть на фактах" (см. [1]). Вьюнош открыл для себя очередную истину и вполне банально решил, что он первый, кто открыл ее. Психолог, панимашь?
← →
Юрий Зотов © (2010-07-31 20:21) [29]
> Rouse_ © (31.07.10 20:19) [27]
Розыч, ну ты же знаешь, что такое overflow? Вот это оно и есть.
← →
vrem (2010-07-31 20:23) [30]Юрий Зотов ©
Вашим способом мокрое полотенце на плечи пользуюсь, сплю даже так) спасиба) читаю Вас в этой ветке и понимаю "кондиционер он так и не купил" - ну были же рассуждения купить не купить, простужаться.
← →
Юрий Зотов © (2010-07-31 20:26) [31]
> vrem (31.07.10 20:23) [30]
А что, я собирался его покупать?
← →
vrem (2010-07-31 20:26) [32]Удалено модератором
← →
Rouse_ © (2010-07-31 20:28) [33]Удалено модератором
← →
Rouse_ © (2010-07-31 20:29) [34]Да будет так :)
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2010.11.14;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.004 c