Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5   вперед  Ctrl      все
 Re: ref и out параметры  [new]
Arm79
Member

Откуда: МО, Раменское
Сообщений: 3669
Antonariy
Ну или несколько разнородных объектов преобразовать в несколько объектов других родов.

Это еще хуже, это имхо чистый exception
20 май 19, 20:28    [21889205]     Ответить | Цитировать Сообщить модератору
 Re: ref и out параметры  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Arm79,
Обязательно файл что ли?
По факту это требуется возврат два, три значения сразу. Без компоновки в класс.
Почему нет?
Ну а ref конвейерная обработка.
Я за свободу).
20 май 19, 20:42    [21889213]     Ответить | Цитировать Сообщить модератору
 Re: ref и out параметры  [new]
fkthat
Member

Откуда:
Сообщений: 1164
Antonariy
Например, метод открытия файла, возвращающий успех/неуспех и текст с путем к файлу или текст ошибки (в зависимости от успеха).


Звучит, как метод, который в зависимости от возвращаемого bool возвращает температуру на южном полюсе или цену на котлеты в соседнем бургеркинге.
20 май 19, 22:03    [21889250]     Ответить | Цитировать Сообщить модератору
 Re: ref и out параметры  [new]
stenford
Member

Откуда: урал
Сообщений: 2759
Antonariy
Мой кодревьюер постоянно клюет мне моск, что использовать ref и out плохо, это слишком low level по его выражению. Я считаю, что не использовать какую-то возможность языка из идейных соображений (исключая goto, но это ограничение хорошо обосновано) - тупо.

если у тебя постоянно используется ref/out/Tuple в коде - то точно что-то не то в консерватории, скорее всего очень непродуманная структура кода и классов, методы делающие и возвращающие несвязанные вещи. Такой код невозможно нормально читать и сопровождать. Ревьювер должен не на сами конструкции указывать, а на более фундаментальные проблемы кода, приведшие к их использованию
21 май 19, 03:39    [21889324]     Ответить | Цитировать Сообщить модератору
 Re: ref и out параметры  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
stenford
если у тебя постоянно
да. Ключевое слово постоянно.
Так же как cons, global и... размер метода в строках. Всему есть мера).
21 май 19, 07:28    [21889354]     Ответить | Цитировать Сообщить модератору
 Re: ref и out параметры  [new]
Arm79
Member

Откуда: МО, Раменское
Сообщений: 3669
Petro123,

Нет, не обязательно )) Я ж не говорю, что плохо. Поэтому предложил сам метод показать, а не "по аналогии", "что-то похожее", так как аналогии могут быть и неверны

Ничего плохого в паттерне Try* нет, но справедливости ради следует отметить, что в в .net его применяют нечасто.

В случае с файлом вполне можно применять, если, например, файл не ваш, а пользуетесь чьим то другим. И не знаете, снята или нет монопольная блокировка. Но и это не 100%, так как монопольно занятый файл приводит при попытке доступа к exception. Иногда есть смысл глушить исключение, а иногда нет.

Без понимания контекста задачи нельзя однозначно сказать, хорошо это или плохо.
21 май 19, 08:01    [21889365]     Ответить | Цитировать Сообщить модератору
 Re: ref и out параметры  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Arm79,
Еще пример, рекурсия. Очень удобен сабж в рекурсии.
Еще пример, пересечение геометрии
Type Intersect(out pnt1, out pn2...
И т.д.
21 май 19, 08:34    [21889384]     Ответить | Цитировать Сообщить модератору
 Re: ref и out параметры  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Arm79
Без понимания контекста задачи нельзя однозначно сказать, хорошо это или плохо.
еще бы. Программирование это искусство а не ремесло (с)))))
21 май 19, 08:35    [21889385]     Ответить | Цитировать Сообщить модератору
 Re: ref и out параметры  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4794
Arm79

Ничего плохого в паттерне Try* нет, но справедливости ради следует отметить, что в в .net его применяют нечасто.


Вообще он появился когда C# был беден на конструкции.
В других языках применяется следующие. в GO что то типа
     public static (bool success, bool res) Parse(string str)
        {                
            if (string.Compare("true", str, true) == 0)
                return (true, true);
            return (false, false);
        }

В f# есть размеченные объединения, которые в итоге разворачиваются во что то подобное.
      public class BaseRes { }
        public class None : BaseRes { }
        public class Some<T> : BaseRes
        {
            public T Value { get; private set; }
            public Some(T t)
            {
                Value = t;
            }
        }

        public static BaseRes ParseBool(string str)
        {
            if (string.Compare("true", str, true) == 0)
                return new Some<bool>(true);
            return new None();
        }
21 май 19, 10:11    [21889456]     Ответить | Цитировать Сообщить модератору
 Re: ref и out параметры  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
ЕвгенийВ
Вообще он появился когда C# был беден на конструкции.
странная фраза.
Ref, out это преимущество шарп.
21 май 19, 10:26    [21889472]     Ответить | Цитировать Сообщить модератору
 Re: ref и out параметры  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4794
Petro123
Ref, out это преимущество шарп.

in еще может быть
ref и out скорее некий компромис, необходимый для взаимодействия с неупровляемым кодом.
21 май 19, 11:20    [21889531]     Ответить | Цитировать Сообщить модератору
 Re: ref и out параметры  [new]
Arm79
Member

Откуда: МО, Раменское
Сообщений: 3669
ЕвгенийВ,

Насколько я помню, как раз в GO применяют такую конструкцию из-за проблем с exception - точнее, из-за другой концепции обработки exception

Так что говорить о "бедности" языковых конструкций C# некорректно
21 май 19, 11:44    [21889554]     Ответить | Цитировать Сообщить модератору
 Re: ref и out параметры  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
ЕвгенийВ,
Юз кейс я написал. Неуправляемый код у меня особенность чисто на деструктор.
Да и зачем его неуправляемым делать).
Поэтому передать по ссылке/указателю и выхолные бывает использую.
Всё испрльзую кроме GOTO))))
Его только в батниках.
Имхо
21 май 19, 11:52    [21889564]     Ответить | Цитировать Сообщить модератору
 Re: ref и out параметры  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4794
Arm79
Так что говорить о "бедности" языковых конструкций C# некорректно

Я к тому, что шарп в последнее время обогатился конструкциями и так называемый паттерн TryXXXX пока в топку.
21 май 19, 12:08    [21889593]     Ответить | Цитировать Сообщить модератору
 Re: ref и out параметры  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4794
Petro123,
Под неуправляемым кодом я имел ввиду именно неуправляемый, как ты это вызовешь без out?
21 май 19, 12:10    [21889597]     Ответить | Цитировать Сообщить модератору
 Re: ref и out параметры  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
ЕвгенийВ
Petro123,
Под неуправляемым кодом я имел ввиду именно неуправляемый, как ты это вызовешь без out?
а я это называл когда то в дельфи win api32).
OK

ЕвгенийВ
паттерн TryXXXX

А чем давить исключения в цикле?
21 май 19, 12:38    [21889632]     Ответить | Цитировать Сообщить модератору
 Re: ref и out параметры  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
ЕвгенийВ
шарп в последнее время
лет 15 или лет 5 это последнее врнмя?
21 май 19, 12:39    [21889634]     Ответить | Цитировать Сообщить модератору
 Re: ref и out параметры  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4794
Petro123
ЕвгенийВ
Petro123,
Под неуправляемым кодом я имел ввиду именно неуправляемый, как ты это вызовешь без out?
а я это называл когда то в дельфи win api32).
OK

Конкретно это не win api.
Petro123
ЕвгенийВ
паттерн TryXXXX

А чем давить исключения в цикле?

Зачем их давить? Вообще исключения не самая легкая штука, если часто возникают случаи например не корректности данных, то их нужно валидировать другими способами, не доводя до бросания исключений.
21 май 19, 14:16    [21889755]     Ответить | Цитировать Сообщить модератору
 Re: ref и out параметры  [new]
hVostt
Member

Откуда:
Сообщений: 15852
fkthat
Мне все-таки как-то сложно придумать ему какую-то полезность, кроме паттерна "bool TryXXXX(out foo)" - кстати, это как раз и есть случай использования out-ов, на который code analysis не ругается.


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

Иначе, придётся городить что-то типа возврата OperationResult с Payload, что не так уж и плохо, так как функционально и работает с async/await.
21 май 19, 14:36    [21889775]     Ответить | Цитировать Сообщить модератору
 Re: ref и out параметры  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
ЕвгенийВ
Зачем их давить? Вообще исключения не самая легкая штука, если часто возникают случаи например не корректности данных, то их нужно валидировать другими способами, не доводя до бросания исключений.
ты как будто не читал что я пишу.
Я давлю именно в юз кейсе ЦИКЛА.
Именно шаблоном tryXXX
Знаешь ДРУГИЕ способы - рассказывай.
21 май 19, 14:52    [21889789]     Ответить | Цитировать Сообщить модератору
 Re: ref и out параметры  [new]
fkthat
Member

Откуда:
Сообщений: 1164
hVostt
Полезность великая. Достать значение из словаря или подобной структуре одним выражением, распарсить строку, любая попытка чего-либо.

Ну так это и есть шаблон bool TryXXX(out ...), про который я писал.

hVostt
Иначе, придётся городить что-то типа возврата OperationResult с Payload, что не так уж и плохо, так как функционально и работает с async/await.

Тем более, что для таких случаев можно общий дженерик завести.
21 май 19, 16:44    [21889896]     Ответить | Цитировать Сообщить модератору
 Re: ref и out параметры  [new]
fkthat
Member

Откуда:
Сообщений: 1164
Как уже писали - неплохо было бы увидеть пример отбракованного кода. Сильно подозреваю, что там будет как почти всегда: "тупой тимлид гнобит юное дарование".
21 май 19, 16:47    [21889900]     Ответить | Цитировать Сообщить модератору
 Re: ref и out параметры  [new]
hVostt
Member

Откуда:
Сообщений: 15852
fkthat
Как уже писали - неплохо было бы увидеть пример отбракованного кода. Сильно подозреваю, что там будет как почти всегда: "тупой тимлид гнобит юное дарование".


Отсутствует адекватное обоснование, при чём тут "гнобление"?
Вся суть ревью это не только контроль качество кода, но и шаринг знаний.
21 май 19, 16:52    [21889907]     Ответить | Цитировать Сообщить модератору
 Re: ref и out параметры  [new]
fkthat
Member

Откуда:
Сообщений: 1164
hVostt
Отсутствует адекватное обоснование, при чём тут "гнобление"?
Вся суть ревью это не только контроль качество кода, но и шаринг знаний.

Ну так в исходном сообщение явно была жалоба на тяжелую жизнь.
21 май 19, 16:55    [21889914]     Ответить | Цитировать Сообщить модератору
 Re: ref и out параметры  [new]
hVostt
Member

Откуда:
Сообщений: 15852
fkthat
Ну так в исходном сообщение явно была жалоба на тяжелую жизнь.


Не думаю, что это является предметом обсуждения :)
По крайне мере до тех пор, пока не станет ясно, что ТС не прав
21 май 19, 17:15    [21889932]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5   вперед  Ctrl      все
Все форумы / WinForms, .Net Framework Ответить