Показать сообщение отдельно

  #7  
Старый 25.12.2009, 12:52
Sn@k3
Познавший АНТИЧАТ
Регистрация: 13.04.2006
Сообщений: 1,738
С нами: 10566621

Репутация: 1198


По умолчанию

Цитата:
Сообщение от Algol  
Недавно один мой знакомый был повергнут в шок, увидев в моем коде оператор 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;
            }
        }
помню-помню когда-то в школе использовал его) но это была только одна задача) а прошло уже много лет)
п.с. о вкусах не спорят) если тебе так удобнее почемубы и нет) в бою все средства...
 
Ответить с цитированием