|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
12.01.2012, 00:46 | #21 | |||
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,568
|
Цитата:
Какой из вариантов читабельнее и понятнее? Этот: Код:
Код:
Цитата:
Цитата:
Не совсем. Он понятнее, т.к. мы явно указываем, какой блок прервать или в какой блок перейти. Не на конкретную метку, а выход из блока. А с метками и возникает путаница. То ли она сразу после блока, то ли где-то ниже. Особенно если кода больше, чем на страницу, не видно даже, куда переход будет. E-Mail: arigato.freelance@gmail.com
|
|||
12.01.2012, 00:57 | #22 | |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
Цитата:
try finally - не всегда спасает, например в том же С и при программировании драйверов. и опять же, этот блок тоже довольно-таки сильно загромождает код. |
|
12.01.2012, 01:27 | #23 | ||
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
Цитата:
Цитата:
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
||
12.01.2012, 01:30 | #24 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Грузин верно подметил насчет С.
там то или метки, или выкручиваться. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
12.01.2012, 01:35 | #25 | |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
Цитата:
Код:
Окей, положим в моём гипотетическом языке GOTO называется BREAK. Тогда я мог бы написать: Код:
Аналогично: Код:
Код:
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
Последний раз редактировалось GunSmoker; 12.01.2012 в 01:56. |
|
12.01.2012, 01:54 | #26 | ||
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,568
|
Цитата:
Цитата:
E-Mail: arigato.freelance@gmail.com
|
||
12.01.2012, 02:27 | #27 | ||||
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
Цитата:
Ладно, даже если исправить фразу - вообще-то C прекрасно позволяет обходится без goto. Это доказал всем известный дядька в известной работе. Вопрос-то не в том, можно или нет, а зачем мне обходится без goto? Цитата:
А Break с именем - это goto в чистом виде. Цитата:
В обоих подходах (именованный блок и GOTO), если ты видишь break/goto что-то - ты в первую очередь проверяешь границы циклов/блоков. И видишь или имя блока или имя метки. И в чём же тогда разница? Это примерно как говорить "я обычно храню ключи от дома в шкафчике у зеркала, поэтому я начну их искать с туалета". Цитата:
Если код умещается на странице/в твоей памяти - между вариантами кода нет разницы, если код не умещается - тебе в любом случае придётся листать. С именованными блоками листать надо вверх, с метками - вниз.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
||||
12.01.2012, 09:49 | #28 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,568
|
GunSmoker, не вижу смысла что-либо доказывать, думайте как хотите.
Единственное, что было бы удобно, что бы можно было бы давать имена циклам прямо в заголовке. Как-то так: Код:
E-Mail: arigato.freelance@gmail.com
|
12.01.2012, 11:18 | #29 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
Давай-ка точки над i расставим.
Метки и GOTO могут стать кошмаром, если ими злоупотреблять. Но в то же время есть парочка ситуаций, где их применение легитимно. Ты уж извини, но любые аргументы "это не читаемо" тут высосаны из пальца. "Мне не нравится" - это нифига не аргумент. Итого получаем, что есть несколько известных случаев хорошего применения и куча способов плохого применения. Так почему бы не узаконить хорошие случаи и запретить плохие? К примеру, ввести имена для блоков и указывать в Break имя блока? Ну и пожалуйста. Я двумя руками за и даже не отказался бы от такого в Delphi (я на нём пишу). НО. Это - GOTO и метки в явном виде. Даже хотя они так не называются. И говорить что вот этот вот код надо переписать, потому что тут GOTO, а вот тот код надо использовать, потому что там именованные блоки - это двоемыслие в чистом виде. Типа, если цветы переименовать в тырбырмыр, то дарить их девушке уже не надо?
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
12.01.2012, 11:48 | #30 | |
C++, Java
Старожил
Регистрация: 10.04.2010
Сообщений: 2,665
|
Цитата:
Дак в сети куча надуманных примеров когда очень неплохо подходят метки. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
зачем учить Pascal | krot_zdes | Свободное общение | 52 | 31.05.2011 16:48 |
Зачем эта перменная (Delphi) | reasons | Помощь студентам | 9 | 15.07.2010 22:22 |
Метки в Tbarseries (Delphi 7) | Николай ПН | Помощь студентам | 0 | 31.03.2010 18:40 |
Что такое коды ASCII и зачем они?? | Ларик | Помощь студентам | 2 | 27.01.2008 19:41 |
обновление в блоге - Ресурсы. Зачем они нужны. | Pblog | Обсуждение статей | 0 | 27.05.2007 03:17 |