Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

.NET und C# ohne Web?

4812   2 3 4 5 6 7 8 9 10 11 12 все
alex445 местный житель20.05.21 13:23
NEW 20.05.21 13:23 
в ответ Murr 20.05.21 11:20

поменял типы данных у стороннего объекта

------

Я просто скопипастил твой код - ленивый Я, лениво писать тип в каждой строке.


чтобы ты не любешь исключения

-----

Над мал-мал на рЮсская языка переводить...

Что до исключенй - когда надо - пользуюсь. Но - да - предпочитаю код где они не нужны. не не используются, а не нужны.


твой подход просто проглотит исключение

-----

Как можно проглотить то чего нету?


Ну посмотри на это сбоку.

Есть метод bool TryParse(string source, out int val)

Предлагается замена int? Parse(string source)

Все тоже самое только bool и int упакованы в int?

Никаких других преимуществ или проблем - нету. Просто нету. неоткуда им там появится.

Мне исключения не нравятся, потому что:


1) громоздкий синтаксис

2) пишутся сильно далеко от когда, который эти исключения бросает (где-то в конце функции)

alex445 местный житель20.05.21 13:26
NEW 20.05.21 13:26 
в ответ koder 20.05.21 11:58
Корявая оракловская джава лучше?


По моему да. По крайней мере сановская. Но это уже религия.

Только (пока ещё) своим распространением и что работы больше?

Программист коренной житель20.05.21 13:28
NEW 20.05.21 13:28 
в ответ alex445 20.05.21 12:59
Это понятно. Но эти кортежи в возврате вместо аут-параметров - это прям ням-ням. Не знаю почему, но меня постоянно бесило после названия функции вспоминать, что там надо пачку аутов определить, прерывать ход своих мыслей по коду и идти определять эти ауты.

Не знаю почему, но я так с ходу и не вспомню, когда писал (и писал ли вообще) функцию с out параметрами :)

Программист коренной житель20.05.21 13:35
NEW 20.05.21 13:35 
в ответ Срыв покровов 20.05.21 13:14
DateTime не высчитывает немецкую календарную неделю.
а в алгоритме расчёта ты получаешь и неделю и год.
можно конечно написать две функции, но это во-первых копипаста будет и во-вторых не перфомантно.

Может быть я чего-то не понимаю, то год - это проперти у DateTime. Там ничего писать не надо. Надо сделать только экстеншен метод для DateTime, который бы рассчитывал немецкую календарную неделю.

koder патриот20.05.21 13:37
koder
NEW 20.05.21 13:37 
в ответ alex445 20.05.21 13:11
Они должны быть простыми,

Нет. Они могут быть реально сложнее чем сам код. Просто это не продуктивный код. Если там что то неправильно это плохо, но не критично.

Не кажется, что тут лишнее звено?

Нет. Ввод непродуктивного проверяющего кода не гарантирует отсутствие ошибок. Но снижает их и снижает очень ощутимо. Просто надо понимать цели иправильно использовать. И помнить, что продуктивный код работает и с юниттестами и без них. И юниттесты нужны в первую очередь не для поиска ошибок, а для проверки кода на критерии. Если юниттест обвалился, то проишодит это всегда в среде разработки и тестирования и никогда в продуктивной среде. То есть есть возможность руками залезть и разобраться, кто виноват.

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

Это уже философия. Проблема в том, что программисты либо неопытные либо дорогие. Что начальство тупое либо это не наше начальство. либо-либo

koder патриот20.05.21 13:40
koder
NEW 20.05.21 13:40 
в ответ alex445 20.05.21 13:26
Только (пока ещё) своим распространением и что работы больше?


Я могу сравнивать с дельфи, с++, яваскриптом. Там однозначно лучше.

alex445 местный житель20.05.21 13:41
NEW 20.05.21 13:41 
в ответ Программист 20.05.21 12:56

Это было бы смешно, если бы не было бы так глупо :)

Интерфейс - это абстракция. Кортеж - конкретика.

Если разрабатывать софт опираясь на конкретные объекты, то рано или поздно будешь похоронен в лесу костылей. При этом костыли будут непонятным образом влиять друг на друга и все это это будет совершенно нетестируемо.

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


Этот подход называется "хуяк, хуяк и в продакшен". Хорошего в этом мало ;)

А на практике - платят неплохие бабки. ))) Главное, на собесе это не говорить.

alex445 местный житель20.05.21 13:49
NEW 20.05.21 13:49 
в ответ koder 20.05.21 13:40
Я могу сравнивать с дельфи, с++, яваскриптом. Там однозначно лучше.

Почему Юнити3Д перешёл на шарп и даже джаваскрипт выкинул? Майкрософт занёс?

koder патриот20.05.21 14:58
koder
NEW 20.05.21 14:58 
в ответ alex445 20.05.21 13:49

а где здесь про Яву?

alex445 местный житель20.05.21 16:43
NEW 20.05.21 16:43 
в ответ koder 20.05.21 14:58, Последний раз изменено 20.05.21 16:44 (alex445)

Там уже не про яву - просто вы упомянули джаваскрипт, что там лучше. Я вспомнил, что вот есть очень известный и распространённый продукт, где перешли с джаваскрипта на шарп. Причём джаваскрипт выкинули вообще - всё, deprecated. Сначала подержали несколько версий параллельно - можно было и на том, и на том писать, а потом выкинули. Почему, как вы думаете?

koder патриот20.05.21 16:46
koder
NEW 20.05.21 16:46 
в ответ alex445 20.05.21 16:43, Последний раз изменено 20.05.21 16:47 (koder)

я неправильно выразился. Имхо хуже явыскрипта нет ничего. Там - я имел в виду Яву


AlexNek патриот20.05.21 16:53
AlexNek
NEW 20.05.21 16:53 
в ответ koder 20.05.21 12:58
А заказчик переименовал вордовский бинарный файл в текстовой и запустил импорт

Ты неправ. Заказчик набрал студентов и они переименовывают все файлы из системы чтобы найти который из них может обвалить приложение.

Это самая распространённая практика думаю спок

AlexNek патриот20.05.21 16:55
AlexNek
NEW 20.05.21 16:55 
в ответ alex445 20.05.21 13:16
Раз у нас области видимости параметров

А причем здесь область видимости? Она никак не изменилась по сравнению со "старым" синтаксисом.

Murr патриот20.05.21 18:15
Murr
NEW 20.05.21 18:15 
в ответ AlexNek 20.05.21 12:23

А сколько их по твоему будет

------

Ну так ясно же - по количеству полей в импортирурмых записях.

В моей практике бывало i более 200...


Murr патриот20.05.21 18:24
Murr
NEW 20.05.21 18:24 
в ответ Программист 20.05.21 12:30

на самом деле

------

он не выбрасывает исключений. хандлил ли он что-то внутри себя - не играет никакой роли.


Я говорю, что все зависит от задачи.

-----

Хи-хи... У нас уже правильность кода начала зависеть от того возвращаем мы два отдельных элемента и их упаковали перед возвратом...

Murr патриот20.05.21 19:05
Murr
NEW 20.05.21 19:05 
в ответ koder 20.05.21 11:56

о обработке исключительного состояния и о том, что лучше - усключение или null

-----

Вроде как тема несколько другая - иметь оут-параметер или упакованный возврат.

Исключений - не будет, возврата null тоже,


Результат будет одним и тем же - невозможно обработать данные.

------

Результат будет существенно разным;


В случае когда отвалил по первой встреченной пролеме ты не имеешь информации об остальных ошибках.

Т.е. ты сообщишь челу об ошибке и он ее исправит... как сможет... вплоть до того, что удалит строку с ошибкой и по окончании импорта/парсинга введет в ручном режиме.

После чего будет импортировать/парсить снова и уткнется в следующую ошибку и будет вынужден снова что-то делать.

А чел - ленив и допускает ошибки.

Так что имея необходимость повторить импорт/парсинг 10-15-100 раз обязательно сделает что-то неправильно.


В случае когда получается полный список того что невозможно распарсить - выполняется однократная обработка всех ошибок в ручном режиме.

В этом случае неправильных действий будет гораздо меньше.


Можно подождать пару часов, пока отработают остальные.

-----

Ну так можно и 100 раз по паре часов ждать пока найдется место которое нельзя распарсить. безум



ООП такое не говорит и говорить не может.

------

ООП говорит что объект должен отвечать за себя сам.

В данном контексте - сообщить что не так со значениями пропертей.



где уже первая строка показывает

-----

Пыхх...

Ну значит возьмешь нужный парсер, делов то - запросить его у фабрики.

Но вопрос то был не в этом.

Murr патриот20.05.21 19:21
Murr
NEW 20.05.21 19:21 
в ответ koder 20.05.21 12:58

А заказчик переименовал

-----

У операторов, кстати, регулярная проблема - пришел файл, получили ошибку импорта, открыли, отредактировали, сохранили... pissec.

Потому как получили текстовый файл, открыли Вордом (.тхт) или Ехцелом (.цсв) и сохранили в формате по умолчанию.


Он будет очен рад протоколу ошибок

-----

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


Murr патриот20.05.21 19:23
Murr
NEW 20.05.21 19:23 
в ответ alex445 20.05.21 13:16

проще отказаться

-----

Ну наконец-то начинает доходить, что определение функции давали не просто так...

Murr патриот20.05.21 19:56
Murr
NEW 20.05.21 19:56 
в ответ AlexNek 20.05.21 16:55

Она никак не изменилась по сравнению со "старым" синтаксисом.

-----

Именно это и напрягает.

Когда ты декларируешь переменную в цикле - она доступна только в цикле.

А когда в вызове функции - вываливается за пределы вызова.

Для меня данный момент создает некоторый дискомфорт.

AlexNek патриот20.05.21 20:04
AlexNek
NEW 20.05.21 20:04 
в ответ Murr 20.05.21 19:56
А когда в вызове функции - вываливается за пределы вызова.

не понял? Ты хочешь что бы "тест" только в скобках была бы доступна?

if(Asd(int out test)) {}


2 3 4 5 6 7 8 9 10 11 12 все