ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

Стереотипы: goto
  #1  
Старый 25.12.2009, 00:46
Аватар для Algol
Algol
Регистрация: 29.05.2002
Сообщений: 1,793
Провел на форуме:
2050916

Репутация: 0


По умолчанию Стереотипы: goto

Недавно один мой знакомый был повергнут в шок, увидев в моем коде оператор goto. Попытки объяснить что не все так плохо не были восприняты
Нынче в институтах учат, что применение goto - не кошерно, не тру и ваще отстой. Применение goto считается преступлением перед мировой общественностью.
Жаль только, что ВУЗы не учат тому, что каждому овощу - свое блюдо.
Ни в коей мере не преувеличивая важность goto, приведу все же два примера, в которых решение без goto было бы некрасиво и сложнее для восприятия:
C#
Код:
        /// <summary>
        /// Функция проверяет, что во всех матрицах есть хотя бы один нуль
        /// </summary>
        /// <param name="listOfMatrix"></param>
        /// <returns></returns>
        public bool HasZero(List<int[,]> listOfMatrix)
        {
            foreach (int[,] matrix in listOfMatrix)
            {
                for (int i = 0; i < matrix.GetLength(0); i++)
                for (int j = 0; j < matrix.GetLength(1); j++)
                    if(matrix[i, j] == 0)
                        goto nextMatrix;//<-----

                return false;
            nextMatrix: ;
            }

            return true;
        }
C#
Код:
        /// <summary>
        /// Создание tcp-сокета, с несколькими попытками подключения
        /// </summary>
        /// <param name="host"></param>
        /// <returns></returns>
        public TcpClient Connect(IPEndPoint host)
        {
            TcpClient client = new TcpClient();

            int maxTryCount = 5;
        tryAgain:
            try
            {
                maxTryCount--;
                client.Connect(host);
                return client;
            }
            catch (SocketException)
            {
                if(maxTryCount>0)
                    goto tryAgain;//<-----
                else
                    throw;
            }
        }
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как настроить две сетки для сервера CyberPank Windows системы 2 16.07.2009 07:55
Bat Micr0b Windows 2 25.04.2006 19:49



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ