@kotlin_lang

Страница 587 из 982
Виталий
16.03.2018
02:04:37
Ну так проблема в том что кто юзает мой метод и класс об этом не знает и бац - вылет

В джава варнинги - сразу все понятно

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

Bogdan
16.03.2018
02:05:58
Ну так проблема в том что кто юзает мой метод и класс об этом не знает и бац - вылет
если твой код может вызвать ошибку ты ее и отрабатывай

Google
Виталий
16.03.2018
02:06:26
Ну так вопрос в другом - как сообщить что теже переданные данные не верные?

когда я сам генерирую исключение

Bogdan
16.03.2018
02:07:09
котлин зам выводит

whalemare
16.03.2018
02:07:24
Ну так проблема в том что кто юзает мой метод и класс об этом не знает и бац - вылет
Это проблема человека, который не почитал документацию прежде чем юзать твой класс. Вполне нормально кидать исключение, если данные не верны

Виталий
16.03.2018
02:08:07
Ну если к примеру 50/50 может вернуться ответ или ошибка?

Bogdan
16.03.2018
02:08:21
в документации обычно указывают что метод может кинуть исключения

Виталий
16.03.2018
02:08:28
Читать доки к каждой функции замучаешся, она из названия должна быть понятна

Bogdan
16.03.2018
02:08:49
ну так например метод чтения файла

я понимаю что он может кинуть исключения

метод который дает рандомное число - вероятность близится к 0

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

Google
Виталий
16.03.2018
02:10:46
Ок, если я явно хочу сообщать что метод может не выполнится, как лучше поступить?

Именно явно, а не по докам

Чтобы самому не забыть и везде явно проверять

Bogdan
16.03.2018
02:11:25
смотри анотации

есть которые в ИДЕ будут кидать варнинг

и человек обычно посмотрит

Виталий
16.03.2018
02:12:24
Вот мне и достаточно хотяб варнингов - типа смотри, ты кажется что-то забыл.

Есть что-то на примете таких аннотаций?

Bogdan
16.03.2018
02:12:57
а что он может забыть?

Виталий
16.03.2018
02:13:19
Я могу забыть что в 50% возвращается исключение

Кода много, все н припомнишь

Bogdan
16.03.2018
02:13:50
ну блин нада смотреть

Виталий
16.03.2018
02:14:02
Вроде обычная функция, что там смотреть

Bogdan
16.03.2018
02:14:03
в котлине тяжело сломать код, в читсом

Виталий
16.03.2018
02:14:17
Но легко словить вылет)

Bogdan
16.03.2018
02:14:36
везде легко

на то ты и программист

Виталий
16.03.2018
02:14:47
Ладно, буду копать в сторону аннотаций

Bogdan
16.03.2018
02:15:06
может ты бы код привел

а то не понятно

Google
Виталий
16.03.2018
02:15:23
В свифте по мне куда лучше решили проблему. Не надо ловить ошибку - укажи try? перед функцией и все

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

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

Это вот первый случай с чем столкнулся когда на котлин переписывал

Виталий
16.03.2018
02:18:46
Ну да, только незаметишь и не укажешь

Потом раз и как-то вылет

Просто я за однозначность в самом языке, а не чтоб к докам постоянно бегать

Bogdan
16.03.2018
02:19:27
пиши на свифте

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

Виталий
16.03.2018
02:20:04
Ну так на ios и пишу))) А на андроид java и kotlin

Виталий
16.03.2018
02:21:46
@Throws(NewsRequestException::class) @JvmOverloads fun requestList(beginIndexBegin: Int, useCache: Boolean = true) { ….. if (info.listPageNowLoaded.contains(page)) throw NewsRequestException("Duplicate request", true) … } Тут могу вернуть в ответе функции результат, но вопрос просто общий, как в целом поступать

Bogdan
16.03.2018
02:29:09
может тебе поможет решения кк в корутинах, где возращается обект в котором проперти с результатом и проперти с ошибкой

DY
16.03.2018
02:34:11
как вариант, использовать что-то типа этого (или написать свою реализацию подобного) https://github.com/kittinunf/Result

или если ексепшн вызывающему коду не нужен, можно возвращать null

Виталий
16.03.2018
02:38:51
Ну вот также и думаю. В objc так делал, но когда перешел на свифт в ios понравилась работа с ошибками, ну а в джава всегда вызывал исключения из-за удобства. Вообще в том свифте сами исключения не перехватываются вообще, просто вылет. Но для сообщения ошибок используется try catch, который не поддерживает исключения

Видать теперь исключения буду юзать только в крайних случаях

Аннотации это хорошо, но хочется писать код по нормам языка без велосипедов

Google
DY
16.03.2018
02:42:15
аннотации, насколько знаю, просто трансформируются в чекед эксепшн для джавы, из котлина даже ворнингов не будет никаких

DY
16.03.2018
02:43:34
? не доводилось юзать, только читал где-то, мб тут, в чате. могу и ошибаться

Admin
ERROR: S client not available

Виталий
16.03.2018
02:50:33
Как вариант в названий методов юзать префикс try, как бы намекая что ответом может быть исключение.

Но всеровно минимизировать исключения в проекте если возможно

Как я наверно и поступлю. :)

Bogdan
16.03.2018
02:52:48
Как вариант в названий методов юзать префикс try, как бы намекая что ответом может быть исключение.
ответом исключения не будет, когда ты кидаешь исключения, то последущий код будет не достижим

Виталий
16.03.2018
02:55:13
Ну префикс просто говорит что не забудь заюзать try catch

Ведь исключение часть метода, то и упомянуть стоит по мне

Если это реально исключительный случай - то это другая история

Даже можно рядом ложить метод без префикса который просто может вернуть нул взамен ошибки



Еще вопрос про пакеты. На что влияет именование пакетов, только ради совместимости с java или в самом котлине есть применение?

Как понимаю права доступа на пакет нету

Вплане доступ к данным в пределах пакета

Bogdan
16.03.2018
04:47:52
Еще вопрос про пакеты. На что влияет именование пакетов, только ради совместимости с java или в самом котлине есть применение?
не совсем, это конечно мое мнение, но пакеты нужны для структуризации, в котлине конечно эту рол могут выполянять файлы

Виталий
16.03.2018
04:49:15
Структуризация да, но вроде можно не привязываться к файловой структуре, через которую и построена вся структура

Вот только иде ругается тогда варнингами)

Google
Виталий
16.03.2018
04:51:08
Тут кстати прикол обнаружил: в джаве в именах пакетов лучше не юзать большие буквы, юзать прочерки. В котлине говорит что юзай камелкейз, но если имена директории не менять, то ругается что не совпадает

Bogdan
16.03.2018
04:51:30
Структуризация да, но вроде можно не привязываться к файловой структуре, через которую и построена вся структура
я имел виду что ты структуру проекта делаешь с помошью пакетов, но иногда можно с помошью файла если у тебя маленький проект и расширятся он сильно не будет

Виталий
16.03.2018
04:52:16
Я про структуру через директории

В джаве совпадать с пакетами должно

Bogdan
16.03.2018
04:53:36
В джаве совпадать с пакетами должно
в котлине нет но кинет варнинг, как ты и говорил. На сайте смотри стиль код

Виталий
16.03.2018
04:54:01
Ну он подчеркивает идешкой

Bogdan
16.03.2018
04:54:19
https://kotlinlang.org/docs/reference/coding-conventions.html

Виталий
16.03.2018
04:54:58
Просто выходит что в таких пакетах с _ варнинги будут всегда)

Либо не совпадает с директорией, либо не камелкейс

Тимур
16.03.2018
06:11:33
Как вариант в названий методов юзать префикс try, как бы намекая что ответом может быть исключение.
Специально throws помечать не надо. Можно просто считать по умолчанию и писать код так, что из любого места может вылететь исключение. Это не только к котлину, но и к java относится, так как RuntimeException никто не отменял. Полез по ссылке и внезапно NPE. Полез в массив и внезапно out of bounds. Поэтому throws оно всегда, а что именно throws - в документации.

Виталий
16.03.2018
06:14:01
С другой стороны да) Тут момент какие именно исключение - от системы или определенное с параметрами. Так то откуда угодно прилетает, особенно в андроиде. Но тут вопрос о поддержки специального вида исключений - которые являются частью ответа и говорящие что дальше делать ничего не нужно что связано с результатом ответа

А то что все окутывать - ну это делается где-то в корне вызовов чтобы приложение не легло

А то что к массиву обратился не так - это ошибка разработчика, нужно чтоб вылетало, иначе можно и не заметить логическую ошибку и не исправить ее

Либо как сказал где-то в корне ловить и отправлять на сервак для изучения

Michael
16.03.2018
07:17:45
можно здець иногда спосить вопросы на английском или это запрешено?

Страница 587 из 982