​​ButterKnife или Data binding?

#разработка #библиотеки



Сегодня на работе спорили о том, что лучше использовать: ButterKnife или Data binding?



Помню, что когда ещё не было ButterKnife, то приходилось писать findViewById, после чего кастовать найденную View к нужной. Было слишком много лишнего кода. Например, если в вашей Activity есть 10 View, то для использования их нужно было писать 20 строк кода с findViewById. С появлением в проектах ButterKnife число строк сократилось вдвое, и теперь нужно было просто написать @BindView(R.id.textView) TextView text.



Не так давно появился Data Binding. Для использования нужно немного модифицировать xml-файл разметки и написать в Activity ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);, после чего у вас появляется доступ к вашему layout напрямую: binding.textView. Количество View не играет никакой роли при использовании Data Binding. Ведь строк кода всегда остается только 2!



Какие плюсы у ButterKnife? Например, есть другие аннотации, которые упрощают работу, например: @OnClick, @OnItemSelected, @BindColor. Также можно примененить аннотации на несколько View.



В Data Binding же мы получаем мощный инструмент для работы с адаптерами в RecyclerView, возможность делать кастомные атрибуты и много других интересных и удобных инструментов.



С появлением Kotlin появились kotlin-android-extensions, которые ещё больше упростили базовую работу с View.



Так уж повелось, то в Java-проектах я использую ButterKnife, а в новых, написанных на Kotlin проектах — Kotlin Extensions. С Binding сталкивался на ранних этапах его появления, но уверен, что это отличный инструмент.



А что больше нравится вам?

🔴 — ButterKnife;

🔵 — Data Binding;

⚫️ — Kotlin Extensions.