Может ли Язык Сделать Вас Лучшим Программистом? Котлин и Android


Когда Google представила Kotlin в качестве полностью поддерживаемого языка для разработки Android, многие программисты подняли настроение. Вопрос в том, почему? Может ли язык что-то изменить?

Kotlin-это Java-подобный язык, который, помимо прочего, компилируется в JVM. Он стремится стать лучшей Java в том смысле, что везде, где у Java есть много кода для выполнения работы, Kotlin пытается упростить. Он делает это не с помощью простых синтаксических трюков, а пытаясь найти новые абстракции, которые позволяют программисту делать то, что он пытается сделать, без необходимости перепрыгивать через множество препятствий. Конечно, это, в свою очередь, приводит к более простому синтаксису.

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

Но делает ли Котлин меня лучшим программистом?

Теперь два исследователя из Университета Валансьена попытались ответить на этот вопрос. Сначала они изучили репозиторий приложений для Android с открытым исходным кодом и обнаружили, что только 12% из них используют некоторые Kotlin. Это соответствует собственной оценке Google в размере около 17%. Что еще более удивительно, так это то, что они обнаружили, что из 12% около 35% не используют ничего, кроме Котлина. Иными словами, 4% от общего числа не используют ничего, кроме Котлина.

Распространение кода Kotlin в приложениях, которые его используют

Учитывая, что Kotlin был представлен только в середине 2017 года, это довольно высокая доля. Было бы интересно узнать, являются ли это совершенно новыми приложениями или 4% приложений были повторно реализованы в Котлине-большой скачок веры.

Глядя на эволюцию смешанных приложений Kotlin/Java с течением времени, было видно явное сокращение Java-кода и увеличение Kotlin. Это говорит о том, что однажды попробованный Котлин не сдается. Было бы интересно узнать, есть ли какие-либо конкретные задачи, в которых Kotlin заброшен, потому что Java на самом деле больше подходит. Я ничего не могу придумать.

Хорошо, значит, Котлин набирает обороты и после использования не сдается, но делает ли это приложения лучше?

На этот вопрос гораздо сложнее ответить, потому что у нас действительно нет четкого представления о том, что использовать для измерения «лучше». В этом случае использовался стандартный анализ кода «запахи».

Следует признать, что в данном случае результаты не столь ясны. Что касается чисто объектно-ориентированных запахов, Kotlin сделал немного хуже, чем Java, с точки зрения просто наличия экземпляра запаха в трех из четырех тестов: класс Blob (BLOB), сложный класс (CC) и Длинный метод (LM). Означает ли это, что преобразования Kotlin имеют проблемы с рефакторингом существующего кода Java? Для специфических запахов кода Android нет существенной разницы, за исключением одного запаха — нет резольвера с низким уровнем памяти (NLMR), т. Е. Нет переполнения памяти Onlowmory. Почему Котлин должен сделать это проще, совсем не очевидно.

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

Что еще более интересно, показатели качества приложений, которые приняли Kotlin, со временем улучшились по сравнению с окончательной версией только для Java. То есть Kotlin не устраняет запахи из базы кода, но снижает их частоту.  Ниже вы можете увидеть пример диаграммы для одного приложения:

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

«Мы завершили наше исследование, анализируя влияние Kotlin на качество приложения для Android. Что касается непосредственного влияния внедрения Kotlin на приложения Android, то есть первой версии, в которой есть код Kotlin, мы обнаружили, что внедрение Kotlin приводит к повышению качества, по крайней мере, 50% приложений.»

Итак — Котлин хорош; Ява плоха!

Не совсем. Есть много других соображений, и запах кода не является прямым показателем качества кода. Исследователи планируют продолжить изучение влияния Kotlin на разработку Android.

Мой собственный опыт показывает, что Kotlin действительно облегчает работу, и, будучи проще, вы, как правило, проходите лишнюю милю просто потому, что можете, то есть у вас остается время и энергия, чтобы лучше выполнять свою работу. Есть также что-то в том, чтобы увидеть более компактный код и заметить, когда он может быть улучшен. Если бы только Android Studio была такой же полезной, как Kotlin. В настоящее время я бы оценил Android Studio как свою самую большую трату времени.

Майк Джеймс является автором Руководство программиста По Kotlin (I/O Press) и программированию на Android в Kotlin: Начиная с приложения (I/O Press), некоторые главы которого уже опубликованы на I Programmer. 


Добавить комментарий