powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как жить без GOTO?
15 сообщений из 15, страница 1 из 1
Как жить без GOTO?
    #39309210
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Замечаю, что частенько использую конструкции
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
do
{
   // do some stuff
   if(condition1) break;
   // do even more stuff
   if(condition2) break;
   // and more stuff
   if(condition3) break;
   // very important stuff to be done only once if all conditions above are fulfilled.
} while(false);



А иногда do/while раздражает.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
   // do some stuff
   if(condition1) goto SKIP_EXP_STUFF;
   // do even more stuff
   if(condition2) goto SKIP_EXP_STUFF;
   // and more stuff
   if(condition3) goto SKIP_EXP_STUFF;
   // very important and expensive stuff to be done only once if all conditions above are fulfilled.
SKIP_EXP_STUFF:
   // do w/o 



Это вообще можно красиво записать без GOTO и без do/while?
Последний раздражает именно тем что при чтении кода часто вводит в заблуждение, нокой тут цикл возникает.
...
Рейтинг: 0 / 0
Как жить без GOTO?
    #39309218
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronЗамечаю, что частенько использую конструкции
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
do
{
   // do some stuff
   if(condition1) break;
   // do even more stuff
   if(condition2) break;
   // and more stuff
   if(condition3) break;
   // very important stuff to be done only once if all conditions above are fulfilled.
} while(false);




В первый раз такое вижу xD. Запихиваешь это в метод, и вместо break - return;
...
Рейтинг: 0 / 0
Как жить без GOTO?
    #39309224
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
if else - религия запрещает?
...
Рейтинг: 0 / 0
Как жить без GOTO?
    #39309230
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилif else - религия запрещает?
А как его тут воткнуть?
...
Рейтинг: 0 / 0
Как жить без GOTO?
    #39309233
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ясное дело что пример упрощённый.
Создатъ метод пока не работает из-за количества параметров. Слишком много их. Может в следующей версии , когда появятся локальные функции.
а вложенные if на более 4 уровней уже больше мешают пониманию.
Мне религия GOTO позволяет. но и иногда хочется чистоты и совершенства.
...
Рейтинг: 0 / 0
Как жить без GOTO?
    #39309248
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikron,

вложенный класс можно соорудить
...
Рейтинг: 0 / 0
Как жить без GOTO?
    #39309256
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikron, рекурсия
...
Рейтинг: 0 / 0
Как жить без GOTO?
    #39309261
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХУ букав одинаково, визуально все видно в обоих подходах. Не понимаю в чем проблема. Я привык без goto, не напрягают подобные лайфхаки даже там где есть goto.
...
Рейтинг: 0 / 0
Как жить без GOTO?
    #39309267
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TИМХУ букав одинаково, визуально все видно в обоих подходах. Не понимаю в чем проблема. Я привык без goto, не напрягают подобные лайфхаки даже там где есть goto.

Блин, мне вот даже в голову не приходит, когда такое может быть удобно
...
Рейтинг: 0 / 0
Как жить без GOTO?
    #39309275
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisБлин, мне вот даже в голову не приходит, когда такое может быть удобно
в сферическом коне, который в вакууме.
...
Рейтинг: 0 / 0
Как жить без GOTO?
    #39309279
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется, тут какой-то over-нагруженный логикой метод на много страниц кода, его бы декомпозировать. Реальный пример в студию

Ну вот, если я правильно понял.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
public ConfigDto GetConfiguration(long param1, long param2)
{
    // do some stuff
    var repository = ResolveRepository<ObjectDto>();

    // condition1
    if (repository == null)
       return null;
    // do even more stuff
    var data = QueryObjectsByParam1(repository, param1)

    if (!data.Any())
       return null;

    return TransformToConfig(data);
}

private IEnumerable<ObjectDto> QueryObjectsByParam1(Repository<ObjectDto> repository, long param)
{
     // condition2
     if (!repository.Any())
         return EmptyArray;

     // and more stuff
     var intermidiateResult = repository.Where(x => x.Id >= param).ToArray();
     
     intermidiateResult.ForEach(x => x.ResolveTime = DateTime.Now());
     return intermidiateResult;
}
...
Рейтинг: 0 / 0
Как жить без GOTO?
    #39309280
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisНу вот, если я правильно понял.

мне показалось, что какой-то автомат программируют,
что не влияет на возможные подходы
...
Рейтинг: 0 / 0
Как жить без GOTO?
    #39309281
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisDima TИМХУ букав одинаково, визуально все видно в обоих подходах. Не понимаю в чем проблема. Я привык без goto, не напрягают подобные лайфхаки даже там где есть goto.

Блин, мне вот даже в голову не приходит, когда такое может быть удобно
Иногда надо, например если хоть одно conditionX не сработало, то в конце надо откат сделать, потом return.
...
Рейтинг: 0 / 0
Как жить без GOTO?
    #39310217
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хейсберг в 7 шарпе делает patern matching. После шарп будет не сильно уступать scala.
...
Рейтинг: 0 / 0
Как жить без GOTO?
    #39311693
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
// do some stuff
   if(!condition1) {
   // do even more stuff
   if(!condition2) {
   // and more stuff
   if(!condition3) {
   // very important stuff to be done only once if all conditions above are fulfilled.
}
}
}

ну и с отступами конечно )))
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как жить без GOTO?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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