Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 31.10.2020
Сообщений: 1
.NET 4.x

Отказ от проверок в родительском методе программы

31.10.2020, 01:14. Показов 513. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть такой метод:
C#
1
2
3
4
5
6
7
8
9
10
11
void Start()
{
  if (!Open())
    return;
  if (!Work())
    return;
  if (!Print())
    return;
  Close();
  return;
}
Т.е. в любом вызываемом методе(Open,Work, Print) может возникнуть условие при котором дальнейшая работа метода Start не требуется и тогда мы должны выйти из метода Start.

Как данный код можно сделать в таком стиле, чтобы было все наглядно и при этом были проверки?
Желательно без Cancellationtoken.
Т.е. задача перенести логику if() проверки в сами методы Open,...
C#
1
2
3
4
5
6
7
8
void Start()
{
 Open();
 Work();
 Print();
 Close();
 return;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.10.2020, 01:14
Ответы с готовыми решениями:

отказ запуска компрессора, периодически отказ компрессора SAMSUNG RL33
Уважаемые мастера. Я не мастер по холодильникам - я электронщик.У меня двухлетний SAMSUNG RL33 Сейчас такая проблема-прошу помочь...

Отловить закрытие приложения в любой точке(классе, методе) программы
Доброго дня. Моя программа выполняет какие-то действия, и, предположим, в какой-то момент она словила необрабатываемое исключение, или...

Нужно чтобы введённый студент в методе in вывелся на экран как в методе out
#include<conio.h> #include<stdio.h> #include<iostream.h> #include<windows.h> #include<cstring.h> // это просто для русских...

4
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,575
31.10.2020, 01:35
Вместо возвращения значения можно кидать исключение в методах Open/Work/Print
C#
1
2
3
4
5
6
7
8
9
10
try
{
 Open();
 Work();
 Print();
 Close();
}
catch
{
}
или
Проверки можно оставить, записав их в 1 строку
C#
1
2
3
  if (!Open() || !Work() || !Print())
    return;
  Close();
1
 Аватар для ShmelVG
171 / 106 / 51
Регистрация: 27.11.2015
Сообщений: 1,269
31.10.2020, 02:17
Roman7543, как вариант

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void Start()
        {
            bool check = false;
            if (!Open())
                check = true;
            if (!Work())
                check = true;
            if (!Print())
                check = true;
            
            if(check)
            {
                Console.WriteLine("Ошибка инициализации");
                Close();
            }
            Console.WriteLine("Успех");            
        }
Соответственно внутри if записывайте откуда пришла ошибка

Добавлено через 44 секунды
Roman7543, как вариант

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void Start()
        {
            bool check = false;
            if (!Open())
                check = true;
            if (!Work())
                check = true;
            if (!Print())
                check = true;
            
            if(check)
            {
                Console.WriteLine("Ошибка инициализации");
                Close();
            }
            Console.WriteLine("Успех");            
        }
Соответственно внутри if записывайте откуда пришла ошибка

Добавлено через 10 минут
Например, пихать битовые флаги внутри тела if, будешь знать откуда ошибка
1
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
31.10.2020, 04:47
Roman7543, а чем в изначальном варианте не наглядно?
1
 Аватар для Enifan
1849 / 1191 / 501
Регистрация: 14.10.2018
Сообщений: 3,211
31.10.2020, 08:08
Сокращенная версия
C#
1
2
3
4
5
    void Start()
    {
        if (Open() && Work() && Print())
            Close();
    }
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.10.2020, 08:08
Помогаю со студенческими работами здесь

Отказ программы "DEFAULT SETTINGEXE APLICANION"
При запуске компа выскакивает сообщение о прекращении работы "DEFAULT SETTINGEXE APLICANION", что это, как исправить? ...

Как в методе main, отследить, что при запуске программы была нажата функциональная клавиша
Как в методе main, отследить что при запуске программы была нажата функциональная клавиша (например shift, например для запуска программы в...

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

Цикл для повторения вычислений создать в методе main. Также в методе main предусмотреть обработку исключений в случае вв
1.Даны целые числа А и В, обозначающие соответственно числитель и знаменатель дроби. Определить метод, вычисляющий наибольший общий...

Добавление проверок в код C
Ребята, всем привет! Начал изучать ЯП C, вот меня и интересует - сделал простой конвертер (допустим рубли в $) , функционал - полностью...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru