Что требуется бизнесу от программиста? Количество LOC? Нет. Производительность в условных попугаях по типу KPI? Не в первую очередь. Бизнесу нужен результат в виде улучшения благосостояния за счёт программного продукта. Поэтому я хочу рассказать о библиотеках и приёмах, которые позволят максимально эффективно создавать программы под Android с минимальными трудозатратами на обход неудобств платформы и языка.
Август 2014, IT-летник, Новосибирск
21. RxJava
• Реактивное программирование — очень ок
• Экономит время на:
• повторяющихся операциях
• цепочках операций
• группах параллельных операций
• взаимодействиях потоков
22. Event Bus
• Делаем приложение слабо связным
• Развязываем руки как «производителям»,
так и «потребителям»
• Дешёвый аналог BroadcastListener
23. Otto — через аннотации
public class BaseFragment extends Fragment {
protected Bus bus = MyApplication.getBus();
@Override
public void onResume() {
super.onResume();
bus.register(this);
}
@Override
public void onPause() {
bus.unregister(this);
super.onPause();
}
@Subscribe
public void onResponse(WelcomeData data) {
loadWelcome(data);
}
}
24. GreenDroid EventBus —
по конвенции
public class BaseFragment extends Fragment {
protected EventBus bus = EventBus.getDefault();
@Override
public void onResume() {
super.onResume();
bus.register(this);
}
@Override
public void onPause() {
bus.unregister(this);
super.onPause();
}
public void onEvent(WelcomeData data) {
loadWelcome(data);
}
}
25. Layouts andViews
• findViewById — скучно и многословно.
• ButterKnife — аннотируем поля класса,
устанавливаем автоматически.
• AndroidQuery — всё в одном, более
лаконичные средства для простой работы
соView
26. Layouts andViews
TextView view = (TextView)findViewById(R.id.text);
view.setText("Hello");
// становится
new AQuery(this).id(R.id.text).text("Hello");
29. Dependency Injection
• Связывать части приложения будет легче
и удобнее.
• Стандарт де-факто — Dagger
• Части приложения (модули) — будут
связаны за нас.
• Синглтоны — за нас.
• Легко подменять модули.
• Легко делать mock-модули.
30. JVM-based языки
• Scala, Clojure, тысячи их.
• Главное — генерировать байткод Java 6.
• И не использовать те фишки, которые
Android из Java 6 не взял.
31. Лучшее — враг
хорошего
• При всех улучшениях и удобствах нужно
контролировать bus factor.
• Все «нестандартные» компоненты могут
со временем сломаться.
• Совместимость между ними не всегда
хороша.