powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / на сколько плох Break для выхода из блока
25 сообщений из 39, страница 1 из 2
на сколько плох Break для выхода из блока
    #39882584
yemets63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
возник спор, на сколько плох break для выхода из цикла, блока?

я использую break достаточно редко , и вот хочеться в большом цикле на основании условий выскочить из блока, коллега не рекомендует, ни чем не обосновывает.
в конкретном случае если не использовать break и делать проверки, в простом выражении привести индекс к итоговому значению цикла, чтобы он сам остановился просто не получится, так как придется проверять еще десяток переменных, пока индекс по кругу дойдет к самому циклы и прекратит работать.


и так, чам плох "Break;" ?
...
Рейтинг: 0 / 0
на сколько плох Break для выхода из блока
    #39882586
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63,

Ничем, городить чушь ничем не обосновывая может каждый... Даже я...
...
Рейтинг: 0 / 0
на сколько плох Break для выхода из блока
    #39882587
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63,

break - это бессмысленное разбазаривание циклов впустую. Хуже него только continue.
Циклы надо доводить до конца. Вдруг в последних итерациях что-нибудь интересное встретится.
...
Рейтинг: 0 / 0
на сколько плох Break для выхода из блока
    #39882588
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
на сколько плох Break для выхода из блока
    #39882589
zinpub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
yemets63,

Плохо, это когда цикл ради break:
Код: pascal
1.
2.
3.
4.
5.
6.
repeat
  if ... then Break;

  if ... then Break;

until True;




Ну и большой цикл(если подразумевается что-то монструозное на несколько экранов) тоже не есть хорошо...
...
Рейтинг: 0 / 0
на сколько плох Break для выхода из блока
    #39882596
yemets63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ma1tus,

goto я использовал последний раз в Basic примерна эдак году в 1993
...
Рейтинг: 0 / 0
на сколько плох Break для выхода из блока
    #39882667
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63возник спор, на сколько плох break для выхода из цикла, блока?

я использую break достаточно редко , и вот хочеться в большом цикле на основании условий выскочить из блока, коллега не рекомендует, ни чем не обосновывает.
в конкретном случае если не использовать break и делать проверки, в простом выражении привести индекс к итоговому значению цикла, чтобы он сам остановился просто не получится, так как придется проверять еще десяток переменных, пока индекс по кругу дойдет к самому циклы и прекратит работать.


и так, чам плох "Break;" ?есть у него одна проблема, большой исходник с break, а так же с Exit мешает бездумно копипастить
...
Рейтинг: 0 / 0
на сколько плох Break для выхода из блока
    #39882696
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63в простом выражении привести индекс к итоговому значению циклаАсь? Это вы такое для for цикла придумали?
zinpubПлохо, это когда цикл ради break:
Код: pascal
1.
2.
3.
4.
5.
6.
repeat
  if ... then Break;

  if ... then Break;

until True;

Иногда такой цикл сильно повышает читабельность кода
...
Рейтинг: 0 / 0
на сколько плох Break для выхода из блока
    #39882730
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot _Vasilisk_]yemets63в простом выражении привести индекс к итоговому значению циклаАсь? Это вы такое для for цикла придумали?
zinpub

Ну когда-то break-continue не было. Может это еще те "динозавры"?
...
Рейтинг: 0 / 0
на сколько плох Break для выхода из блока
    #39882745
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
настоящие пацаны для выхода из цикла бросают исключение!!111
...
Рейтинг: 0 / 0
на сколько плох Break для выхода из блока
    #39882751
sql2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Квейднастоящие пацаны для выхода из цикла бросают исключение!!111

или halt, да?


Новички почитают и примут к сведению... к чему этот топик?
...
Рейтинг: 0 / 0
на сколько плох Break для выхода из блока
    #39882775
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yemets63возник спор, на сколько плох break для выхода из цикла, блока?
На 0.

yemets63коллега не рекомендует, ни чем не обосновывает.
Поменьше слушайте всяких идиотов.
...
Рейтинг: 0 / 0
на сколько плох Break для выхода из блока
    #39882776
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В С++ можно помечать функцию как "безвозвратную".
Код: plaintext
1.
[[noreturn]] void f();

Типа - после её вызова не стоит ждать продолжения и, стало быть, можно, например, особо не компилять код в строчках после точки вызова....
...вот и нам бы циклы такие. безвозвратный цикл, в котором break запрещен. :)
...
Рейтинг: 0 / 0
на сколько плох Break для выхода из блока
    #39882778
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёёВ С++ можно помечать функцию как "безвозвратную"
Мне иногда не хватает этого в дельфях - только не в варианте "помечать", а в варианте "оптимизатор проследил граф передачи управления". Не вижу причин плохо делать руками то, что элементарно делается автоматически.
...
Рейтинг: 0 / 0
на сколько плох Break для выхода из блока
    #39882784
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, хозяйке на заметку, функция IndexOf
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
function IndexOf(AItem: TType): Integer;
begin
  for Result := 0 to Count - 1 do begin
    if AItem = Items[Result] then
      Exit;
  end;
  Result := -1;
end;
...
Рейтинг: 0 / 0
на сколько плох Break для выхода из блока
    #39882962
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot zinpub]yemets63,

Плохо, это когда цикл ради break:
Код: pascal
1.
2.
3.
4.
5.
6.
repeat
  if ... then Break;

  if ... then Break;

until True;


Ничего подобного. Если цикл можно прервать по десятку условий, что в until ставить-то?
...
Рейтинг: 0 / 0
на сколько плох Break для выхода из блока
    #39882970
zinpub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Василий 2]zinpubyemets63,

Плохо, это когда цикл ради break:
Код: pascal
1.
2.
3.
4.
5.
6.
repeat
  if ... then Break;

  if ... then Break;

until True;


Ничего подобного. Если цикл можно прервать по десятку условий, что в until ставить-то?

В данном случае, я иллюстрировал использование Break = Goto[Until]
...
Рейтинг: 0 / 0
на сколько плох Break для выхода из блока
    #39882972
zinpub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Василий 2Ничего подобного. Если цикл можно прервать по десятку условий, что в until ставить-то?

Я бы сделал функцию IsFinished
...
Рейтинг: 0 / 0
на сколько плох Break для выхода из блока
    #39883161
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zinpubЯ бы сделал функцию IsFinished Которое будет проверяться в конце итерации. Тогда как Break прервет итерацию досрочно.

Предложите добавить еще пару-тройку if в тело цикла?
...
Рейтинг: 0 / 0
на сколько плох Break для выхода из блока
    #39883173
zinpub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_,

Я нигде не говорил, что Break нельзя использовать.

Конечно если придумать мегацикл, то необходимо выходить Break'ом - но лучше, имхо, как-то разбивать подобные циклы...
...
Рейтинг: 0 / 0
на сколько плох Break для выхода из блока
    #39883178
yemets63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
круто, мы спорили меньше с коллегой.

маленькие циклы ни когда не использую break

а тут огромный, рожденный пару лет назад кем то, условие заказчика, что нужно добавить условие и если оно выполнено выходить, break было простым и лучшем решением.

всем спасибо
...
Рейтинг: 0 / 0
на сколько плох Break для выхода из блока
    #39883211
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zinpubКонечно если придумать мегацикл,Вот вам простейший цикл
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
while True do begin
  if c1(a) then
    a := f1(a);

  if c2(a) then
    break;

  a := f2(a);
end;

сможете избавиться от break не ухудшив читабельность?
...
Рейтинг: 0 / 0
на сколько плох Break для выхода из блока
    #39883228
delphinotes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_zinpubКонечно если придумать мегацикл,Вот вам простейший цикл
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
while True do begin
  if c1(a) then
    a := f1(a);

  if c2(a) then
    break;

  a := f2(a);
end;

сможете избавиться от break не ухудшив читабельность?

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
  if c1(a) then
    a := f1(a);
  while not c2(a) do
  begin
    a := f2(a);
    if c1(a) then
      a := f1(a);
  end;


или так:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
procedure d1(var a); inline;
begin
  if c1(a) then
    a := f1(a);
end;

  d1(a);
  while not c2(a) do
  begin
    a := f2(a);
    d1(a);
  end;


или даже так:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
procedure d1(var a); inline;
begin
  if c1(a) then
    a := f1(a);
end;

function d2(var a): Boolean; inline;
begin
  Result := not c2(a);
  if Result then
    a := f2(a);
end;

  d1(a);
  while d2(a) do
    d1(a);
...
Рейтинг: 0 / 0
на сколько плох Break для выхода из блока
    #39883232
delphinotes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
собственно последний вариант элементарно уже приводится к
Код: pascal
1.
2.
3.
repeat
  d1(a);
until d2(a);


предварительно инвертировав результат в d2
...
Рейтинг: 0 / 0
на сколько плох Break для выхода из блока
    #39883239
delphinotes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В целом, что Break, что Continue, что даже Exit вполне можно использовать в циклах, не понимаю, почему это может считаться дурным тоном.
Собственно как и goto - в крайне редких случаях код с goto получается читабельнее, но это только в специфических (библиотечного типа) алгоритмах (шифрование, какое-нибудь конвертирование/преобразование). Т.е. в тех случаях когда написал, оттестировал и забыл.

В прикладных задачах, всё-таки, лучше разделять на мелкие куски и всё приводить к простым конструкциям.
...
Рейтинг: 0 / 0
25 сообщений из 39, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / на сколько плох Break для выхода из блока
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]