Мой опыт работы со Скалой
8 ноября 2022 г.Я буду говорить о Scala в надежде, что это побудит вас изучить/перенять Scala в вашем следующем проекте. Я не буду рассказывать о том, что доступно на странице документации по Scala, например, о производительности и функциональности, а только об идеях, касающихся опыта разработчиков и продуктивности.
Отказ от ответственности: некоторые из упомянутых здесь преимуществ никогда не будут реализованы вами, если вы никогда не просматривали документы/блоги по scala или ваши старшие инженеры были плохими программистами и не хотели что-то менять.
Параллельное программирование
В Scala есть самые простые инструменты для реализации параллельного программирования.
Опытные программисты и «гениальные» программисты могут реализовывать параллельное программирование на любом языке и/или заявлять об этом.
Но когда речь идет о младших инженерах, нет лучшего места, чем Scala.
Самая простая версия – это Wrap it вокруг Future {}. Насколько это просто?
Неизменяемость
Когда я начал работать со Scala, я думал, что неизменяемость не так уж и важна. Я подумал: «Я не разработчик библиотек/систем и не пишу никакого кода с общими переменными/ресурсами».
Но только спустя несколько месяцев я понял, что неизменяемость приводит к меньшему количеству ошибок.
Это похоже на математику. Все определено. После определения вы не можете изменить его. если вы это сделаете, это не сработает.
val a = Seq(1,2,3)
val b = a.map(t=>t*t)
register(a)
process(b)
В этом блоке, если вас интересует функция process
, вам нужно только проверить значение b
. Вам никогда не нужно проверять, что случилось с a
.
Но в других языках программирования по умолчанию вы должны проверять, меняет ли a.map значения на месте или нет и/или меняет ли их регистр. (С правильными инструментами эта проблема никогда не возникнет в других языках, но Scala, использующая это по умолчанию, — очень хорошая идея).
Это избавляет нас от ошибок и массы времени, потраченного на отладку.
Модульное тестирование с имитацией
Если вы новичок, в конечном итоге вам придется писать модульные тесты, и это тоже с использованием насмешек. Это верно для большинства языков, но кажется естественным, когда вы пишете это на Scala из-за неизменяемости и обескураживания глобальных переменных.
Как бы вы написали код, если использование глобальных переменных не рекомендуется? только одним способом: передать его через конструктор или функцию. Если вы сделаете это, насмешки станет намного проще настроить. Вам не нужно беспокоиться о том, что другие тестовые примеры испортят вашу логику.
Подходящие инструменты функционального программирования
Функциональное программирование имеет много преимуществ (поищите). Но большинству из нас никогда не нужны эти очень сложные концепции, потому что большая часть нашего кода связана с бизнес-логикой. В стандартной библиотеке Scala есть именно это.
Scala по умолчанию включает большинство вещей в базовые функциональные парадигмы. Вариант, Либо, Попробуйте и даже Будущее. Все работает согласованным образом, повышая производительность разработчиков.
Стиль кодирования улучшится
Из-за всех вышеперечисленных преимуществ вполне естественно, что ваш стиль написания кода улучшится. Более того, ваш стиль программирования на других языках улучшится благодаря идеям, которые вы почерпнули в Scala. Для меня это было с PHP. Я стал лучшим разработчиком, чем раньше. Мой код и код моего младшего (которого я обучал на своих идеях) всегда выглядел чище, чем другие, и коллеги говорили то же самое о моем коде (немного хвастовства 😁).
Итак, если вы изучаете Scala или думаете, стоит ли вам использовать его для нового проекта в вашей организации, я предлагаю вам это сделать. Как всегда, посмотрите, подходит ли вам scala и экосистема scala. Но судя по опыту и продуктивности разработчиков, это один из лучших языков, с которым можно работать.
Оригинал