Paitor
@Paitor
Выпускник. Изучаю Python и прочее

Почему в Kotlin (а может и в Java) так много методов?

Я изучал Python и VB, и в сравнении с ними Kotlin имеет гораздо больше методов у стандартных объектов. Почему так?

Понятно, что часть методов появляется из-за строгой типизации: для разных типов приходится писать разные методы, но не считая их, в kotlin всё равно больше методов.

Я столкнулся с этим, когда хотел обрезать строку в Kotlin. Я нашел и substringBefore, substringBefore, substringAfterLast, take, takeWhile, drop и ещё уйму. Зачем так много? Да, есть задачи, которые они решают, но ведь это не причина писать по методу для каждой проблемы, которая может возникнуть у разработчика. В python, который, как я слышал, считается удобным в плане использования языком, методов на порядок меньше.

Понимаю, что вопрос может оказаться некорректным или абсурдным, потому что я не долго пытался разобраться, тогда я удалю вопрос, если "сообщество" посчитает, что так нужно
  • Вопрос задан
  • 305 просмотров
Решения вопроса 1
Jacen11
@Jacen11
Зачем так много?
то есть по вашему лучше когда в проекте велосипеды, так еще они и постоянно повторяются, потому что названия разные и один разраб просто не знал что уже другой сделал простой метод в проекте. Плюс частенько реализация лучше и продуманее своей, нормальный человек не будет тратить много времени на велосипед. Требуется решать задачи бизнеса, а не думать как обрезать строку после определенного символа.
ИМХО в котлине эти методы скорее наделаны скорее показать преимущество котлина с их эксеншенами, в джаве с этим сложнее было.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
mayton2019
@mayton2019 Куратор тега Java
Bigdata Engineer
В Java мне часто не хватает некоторых методов для работы со строками и я подключаю commons-lang3. Кажется там есть всякие расширенные опции поиска и замены. И что характерно там не нужен формат регулярки. А просто можно строку заменять на строку. Я давно ничего не делал в Котлине и не знаю как там щас. Но мне кажется что они пошли по пути очень быстрой эволюции языка. Я не знаю хорошо это или плохо. Как мне кажется это всегда плохо
для изучающих язык. Язык богатый фичами языка - всегда будет сложен в разборе поведения. Яркий пример - неопределенное поведение в некоторых языках. Целые статьи на эту тему пишут. Чтоб объяснить почему инкременты с присвоениями конфликтуют в одном выржаении.

И вообще найти баланс между ядром языка и библиотеками - это большое искусство. Я в данном случае - за простоту языка.
Ответ написан
@Wan-Derer
Зобанели на Хабре, волки́ ;((
часть методов появляется из-за строгой типизации: для разных типов приходится писать разные методы

Нет. В Java каждый объект имеет конкретный тип, поэтому у него не может быть методов для разных типов :)
String - тип очень распространённый, с ним много работы, поэтому в Java сочли необходимым прикрутить к нему ряд методов, максимально их оптимизировав. И я бы не сказал что их много. М.б. так кажется глядя на список, выдаваемый IDE, но там много перегруженных методов: с одинаковым именем, но с разными аргументами. Плюс есть статические методы у класса String. Плюс есть специальные классы StringBuilder/StringBuffer, там есть свои методы, видимо, народ просил :)
То же относится к массивам - всё ради скорости!
В Котлин же всё свалили в кучу, в т.ч. то что в Java делается циклами или через Stream API, поэтому кажется что методов до фига много. На самом деле, это просто "синтаксический сахар", когда в одно действие сводится несколько.
Просто считай что Java "более низкоуровневая" чем Питон. Пользуйся теми методами что тебе нужны здесь и сейчас. Остальные пригодятся со временем.
Ответ написан
Комментировать
dark_firewall
@dark_firewall
Программист C#
Язык расширяется, и эти методы это дополнительные плагины могут быть которые среда устанавливает
допустим анимации, раньше их через код писали а щас есть полноценный аниматор для таких вещей
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы