Здравствуйте, Ransom Stark, Вы писали:
FL>>Параметр по умолчанию очень удобен, когда добавляется параметр функции, и не хочется переписывать старый код. RS>Т.е., изменить сигнатуру функции и от души посмеяться над теми, у кого функция перестанет вызываться? RS>IMHO, пример создания потенциальных проблем на пустом месте — и всё из за трёх строчек кода? RS>Другое дело, если в функции 40 параметров, и каждый не обязателен. Как такое писать на шарпе — не представляю. Но надеюсь, никогда и не узнаю.
Создать класс с 40 полями и передавать в фунцию его экземпляр. В конструкторе полям приписываются значения по умоланию.
Здравствуйте, Lloyd, Вы писали:
L>Создать класс с 40 полями и передавать в фунцию его экземпляр. В конструкторе полям приписываются значения по умоланию.
Ну зачем же сразу класс, можно ссылку на структуру. Обычный подход с дефаултным конструктором
Массив параметров вам тоже поможет
и солнце б утром не вставало, когда бы не было меня
L>>Создать класс с 40 полями и передавать в фунцию его экземпляр. В конструкторе полям приписываются значения по умоланию. S> Ну зачем же сразу класс, можно ссылку на структуру. Обычный подход с дефаултным конструктором
Если обобщить и вернуться к теме — IMHO, параметры по умолчанию — не лучший выбор с точки зрения стиля и дизайна
Все понятно. Задал параметр, значит будет добавляться AllText, не задал не будет.
Возникает вопрос, а как сделать аналогичную конструкцию на С#?
1. Сделать две перегруженные копии ф-ции. В одной будет добавление All а в другой — нет. Это имхо неудобно если потребуется изменить код ф-ции. Прийдется менят в двух местах.
2. Создать 3 ф-ции
Две из них это интерфейсы к третьей, которая собственно и будет делать всю работу.
3. Использовать все же ф-цию с 2 параметрами и всегда их явно указывать. Это, имхо, лучший вариант, но стоило ли тогда огород городить...
Это я к тому, что некоторые говорят будто перегрузка всегда лучше и логичнее чем дефолтовые параметры. Не лучшее. И лучше бы они оставили в C# параметры по умолчанию.
Здравствуйте, Serginio1, Вы писали:
S>Здравствуйте, Lloyd, Вы писали:
L>>Создать класс с 40 полями и передавать в фунцию его экземпляр. В конструкторе полям приписываются значения по умоланию. S> Ну зачем же сразу класс, можно ссылку на структуру. Обычный подход с дефаултным конструктором
Класс -- потому что это стандартый подход (патерн) для данной проблемы. Кажется так и называется Parameter.
Дефаултный конструктор у структуры? Нука-нука. Расскажи.
Да и зачем ссылку? Ты собрался значения через нее что-ли возвращать?
S> Массив параметров вам тоже поможет
Угу. Нам типа плевать на типобезопасность и все такое. Как что-ли?
Здравствуйте, Lloyd, Вы писали:
L>Дефаултный конструктор у структуры? Нука-нука. Расскажи.
Не расскажу. Хоть и нельзя но можно. Просто под конструктором может выступаь любая статическая функция. С Новым Годом!!! И больше положительных Эмоций!!! L>Да и зачем ссылку? Ты собрался значения через нее что-ли возвращать?
Во Во сишники. Как Win Api так ссылки на структуры нормальное явление. Классы ни ни.
Только стек и никаких куч. S>> Массив параметров вам тоже поможет
L>Угу. Нам типа плевать на типобезопасность и все такое. Как что-ли?
Чья проблема, тот так и реализует.
Еще раз С Нвым Годом!!!!
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S>Здравствуйте, Lloyd, Вы писали:
L>>Дефаултный конструктор у структуры? Нука-нука. Расскажи.
S> Не расскажу. Хоть и нельзя но можно. Просто под конструктором может выступаь любая статическая функция. С Новым Годом!!! И больше положительных Эмоций!!!
А зачем тогда структура-то? Не понимаю.
L>>Да и зачем ссылку? Ты собрался значения через нее что-ли возвращать?
S>Во Во сишники. Как Win Api так ссылки на структуры нормальное явление. Классы ни ни. S> Только стек и никаких куч.
Вообще-то, класс и стуктура в сях мало чем отличаются. Обласью видимости по умолчанию только (у класов -- приват, а структур -- паблик). Именно по этому и используют структуры. Чтобы лишний раз public не писать.
S>>> Массив параметров вам тоже поможет
L>>Угу. Нам типа плевать на типобезопасность и все такое. Как что-ли? S> Чья проблема, тот так и реализует.
Опять не понял. Ты скажи прямо, плевать или нет?
Если не плевать, то как быть с параметрами разного типа, если плевать, то с вами, пациент, все ясно.
S> Еще раз С Нвым Годом!!!!
Здравствуйте, Lloyd, Вы писали:
L>А зачем тогда структура-то? Не понимаю.
L>>>Да и зачем ссылку? Ты собрался значения через нее что-ли возвращать?
Ну разница есть оссобенно когда структура много..... S>>Во Во сишники. Как Win Api так ссылки на структуры нормальное явление. Классы ни ни. S>> Только стек и никаких куч.
L>Вообще-то, класс и стуктура в сях мало чем отличаются. Обласью видимости по умолчанию только (у класов -- приват, а структур -- паблик). Именно по этому и используют структуры. Чтобы лишний раз public не писать.
А в Net это отличие. Структура в зависимости от объявления может находитсы и в стеке. И согласно скорости ее и надо использовть.
S>>>> Массив параметров вам тоже поможет
L>>>Угу. Нам типа плевать на типобезопасность и все такое. Как что-ли? S>> Чья проблема, тот так и реализует.
L>Опять не понял. Ты скажи прямо, плевать или нет? L>Если не плевать, то как быть с параметрами разного типа, если плевать, то с вами, пациент, все ясно.
Ну значит разные Consol итд к Вам. Зачем же такой. Применяются налево и на право.
Ты в какой области Доктор????
ГОВОРЮ ПРЯМО. КОНЕЧНО НЕ ПЛЕВАТЬ. ПО СВОЕЙ СУТИ ПЕРЕДАЧА ССЫЛКИ НА СТРУКТУРУ или Объект лучше, чем запихивать в стек кучу нетипизированных данных, и их обработка в вызываемой процедуре.
Но понятие дефолтных параметров, если я конечно не ошибаюсь, появилась с Васика как и именованные параметры. Суть в общем таже.
А если рассматривать как передача по значению структуры или отделно взятых параметров то физический смысл один и тот же.
С Наступающим Новым Годом!!!!
L>А почему С большая?
L>P.S. Nothing personal.
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
S>Здравствуйте, Lloyd, Вы писали:
L>>А зачем тогда структура-то? Не понимаю.
L>>>>Да и зачем ссылку? Ты собрался значения через нее что-ли возвращать?
S> Ну разница есть оссобенно когда структура много.....
Что много ...? Ты загадками сегодня лучше не говори, конец недели все-таки. Соображаю туго.
S>>>Во Во сишники. Как Win Api так ссылки на структуры нормальное явление. Классы ни ни. S>>> Только стек и никаких куч.
L>>Вообще-то, класс и стуктура в сях мало чем отличаются. Обласью видимости по умолчанию только (у класов -- приват, а структур -- паблик). Именно по этому и используют структуры. Чтобы лишний раз public не писать.
S> А в Net это отличие. Структура в зависимости от объявления может находитсы и в стеке. И согласно скорости ее и надо использовть.
А причем тут тогда winapi?
S>>>>> Массив параметров вам тоже поможет
L>>>>Угу. Нам типа плевать на типобезопасность и все такое. Как что-ли? S>>> Чья проблема, тот так и реализует.
L>>Опять не понял. Ты скажи прямо, плевать или нет? L>>Если не плевать, то как быть с параметрами разного типа, если плевать, то с вами, пациент, все ясно. S> Ну значит разные Consol итд к Вам. Зачем же такой. Применяются налево и на право.
Ну во первых Consol вряд ли где примняется. А вот Console -- другое дело.
А ты подумай, много ли там изпользуется от передаваемого параметра? ToString да проверка на IFormattable разве только. Если ты согласен этим ограничиться, то welcome.
S>Ты в какой области Доктор???? S> ГОВОРЮ ПРЯМО. КОНЕЧНО НЕ ПЛЕВАТЬ. ПО СВОЕЙ СУТИ ПЕРЕДАЧА ССЫЛКИ НА СТРУКТУРУ или Объект лучше, чем запихивать в стек кучу нетипизированных данных, и их обработка в вызываемой процедуре.
Чем передача ссылки на структуру лучше передачи объекта? Не понимаю. К тому же мы не решаем проблему изменеия переданных данных.
S> Но понятие дефолтных параметров, если я конечно не ошибаюсь, появилась с Васика как и именованные параметры. Суть в общем таже.
Сильно сомневаюсь.
S> А если рассматривать как передача по значению структуры или отделно взятых параметров то физический смысл один и тот же.
А зачем рассматривать передачу по значению структуры?
S> С Наступающим Новым Годом!!!!
L>>А почему С большая?
L>>P.S. Nothing personal.
Здравствуйте, Lloyd с Новым Наступающим Годом !!!
L>>>А зачем тогда структура-то? Не понимаю.
Да По Барабану. Хочешь объектк, хочешь структуру по ссылке. Или Есть какая то разница. Вернее она есть, но .... L>>>>>Да и зачем ссылку? Ты собрался значения через нее что-ли возвращать?
S>> Ну разница есть оссобенно когда структура много.....
L>Что много ...? Ты загадками сегодня лучше не говори, конец недели все-таки. Соображаю туго.
Вот и я думаю, зачем в Win Api в основном по ссылке структуры передают ???? S>>>>Во Во сишники. Как Win Api так ссылки на структуры нормальное явление. Классы ни ни. S>>>> Только стек и никаких куч.
L>>>Вообще-то, класс и стуктура в сях мало чем отличаются. Обласью видимости по умолчанию только (у класов -- приват, а структур -- паблик). Именно по этому и используют структуры. Чтобы лишний раз public не писать.
Только в WinApi они называются struct. А так у родоначальников надо спросить. Да и Win API это C, а там вроде объектов не было.
S>> А в Net это отличие. Структура в зависимости от объявления может находитсы и в стеке. И согласно скорости ее и надо использовть.
L>А причем тут тогда winapi?
Суть та же. S>>>>>> Массив параметров вам тоже поможет
L>>>>>Угу. Нам типа плевать на типобезопасность и все такое. Как что-ли? S>>>> Чья проблема, тот так и реализует.
L>>>Опять не понял. Ты скажи прямо, плевать или нет? L>>>Если не плевать, то как быть с параметрами разного типа, если плевать, то с вами, пациент, все ясно. S>> Ну значит разные Consol итд к Вам. Зачем же такой. Применяются налево и на право.
L>Ну во первых Consol вряд ли где примняется. А вот Console -- другое дело. L>А ты подумай, много ли там изпользуется от передаваемого параметра? ToString да проверка на IFormattable разве только. Если ты согласен этим ограничиться, то welcome.
S>>Ты в какой области Доктор???? S>> ГОВОРЮ ПРЯМО. КОНЕЧНО НЕ ПЛЕВАТЬ. ПО СВОЕЙ СУТИ ПЕРЕДАЧА ССЫЛКИ НА СТРУКТУРУ или Объект лучше, чем запихивать в стек кучу нетипизированных данных, и их обработка в вызываемой процедуре.
L>Чем передача ссылки на структуру лучше передачи объекта? Не понимаю. К тому же мы не решаем проблему изменеия переданных данных.
По большому счету ни чем, просто за объектом GC начинает следить, и при очень большом выделении объектов это сразу заметно.
S>> Но понятие дефолтных параметров, если я конечно не ошибаюсь, появилась с Васика как и именованные параметры. Суть в общем таже.
L>Сильно сомневаюсь.
S>> А если рассматривать как передача по значению структуры или отделно взятых параметров то физический смысл один и тот же.
L>А зачем рассматривать передачу по значению структуры?
А чем передача Default-параметры параметров отличается от передачи структуры по значению????С Наступающим Новым Годом!!!!
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Ransom Stark, Вы писали:
RS>С точки зрения дальнейшей работы надежнее и понятнее. "Либо так, либо так", вместо "так, но если очень хочется. то эдак"
Странно... Значит Страуструп нелогичный и непоследовательный идиот, а все из M$ мудрецы продвинутые, идиал во плоти так сказать...
Здравствуйте, Ransom Stark, Вы писали:
RS>Если обобщить и вернуться к теме — IMHO, параметры по умолчанию — не лучший выбор с точки зрения стиля и дизайна