Прежде всего: у Kotlin static typing.Компилятор точно знает, какой тип идет или куда приходит.И вы всегда можете это записать, как
fun sum(a: Int, b: Int): Int {
val c: Int = 1
Суть в том, что вы можете написать много кода, который просто полагается на тот факт, что все, что вы делаете, статически типизировано.и тип проверен тоже!
Вам действительно нужно знать, добавляете ли вы два двойных, два целых или два длинных, когда все, что вам «нужно» посмотреть, это a + b
?
В конце концов, речь идет о балансировке различных требований.Оставление типа может быть полезным: меньше кода, который должен быть прочитан и понят читателями.
Конечно: если вы пишете код, чтобы люди постоянно обращались к своей IDE за IDE, чтобы сообщить им фактический, предполагаемый тип чего-либо, то вы превратили полезную функцию в проблему!
Реальный ответ здесь: это зависит.Я был во многих обзорах кода, где C ++ люди обсуждали использование ключевого слова auto
.Было много ситуаций, когда использование auto
действительно облегчало чтение и понимание кода, потому что вы могли бы сосредоточиться на «что происходит с переменной», вместо того, чтобы смотреть 1 минуту на ее объявление, пытаясь понять его тип,Но были также случайные примеры, когда auto
достигали полной противоположности, и легче было следовать «полностью типизированной» декларации.
И учитывая комментарий ОП: вы должны знать, что вы делаете в первую очередь.Значение: когда вы пишете код, вы не просто вызываете «любой» метод, который вы найдете в каком-либо объекте.Вы вызываете метод, потому что вы должны.Вы лучше знаете , что он делает, и что он возвращает вам.Я согласен, когда кто-то спешит, вы быстро назначаете var, а затем передаете эту вещь, что может привести к ошибкам.Но для каждой ситуации, когда var
помогает в создании ошибки, может быть 10 случаев, когда это помогает писать более простой для чтения код.Как сказано: жизнь - это баланс.
Наконец: языки не должны добавлять функции без причины.И люди Kotlin тщательно уравновешивают особенности, которые они добавляют.Они не добавили вывод типа, потому что он есть в C ++.Они добавили это, потому что они тщательно исследовали другие языки и нашли это полезным, чтобы быть частью языка. Любая функция языка может быть использована не по назначению. всегда зависит от программиста, чтобы написать код, который легко читать и понимать.И когда ваши методы имеют неясные сигнатуры, поэтому «чтение» их имен само по себе не говорит вам о том, что происходит с гонгом, то вините это в имени метода, а не в выводе типа!