Что требуется бизнесу от программиста? Количество LOC? Нет. Производительность в условных попугаях по типу KPI? Не в первую очередь. Бизнесу нужен результат в виде улучшения благосостояния за счёт программного продукта. Поэтому я хочу рассказать о библиотеках и приёмах, которые позволят максимально эффективно создавать программы под Android с минимальными трудозатратами на обход неудобств платформы и языка.
Август 2014, IT-летник, Новосибирск
— Что делать, если у вас много асинхронного кода и он выглядит как лапша?
— Как делать системы проще, используя подходы и принципы из мира функционального программирования.
Джоэл Спольски много лет назад придумал тест на качество и адекватность IT-компании, но ценности он не теряет и по сей день.
Сентябрь 2014, TechTalks NSU, Новосибирск
— Что делать, если у вас много асинхронного кода и он выглядит как лапша?
— Как делать системы проще, используя подходы и принципы из мира функционального программирования.
Джоэл Спольски много лет назад придумал тест на качество и адекватность IT-компании, но ценности он не теряет и по сей день.
Сентябрь 2014, TechTalks NSU, Новосибирск
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Andrey Rebrov
Как-то так происходит, что “на 10 девчонок по статистике 9 ребят”, а точнее на группу из 5-7 разработчиков – 1 тестировщик. Или его нет совсем. Так что очень часто приходится и код писать, и тестировать, а дата релиза все ближе и ближе.
В тех случаях, когда мы пишем веб-приложение, помочь в нашей нелегкой судьбе может бодрящий микс из Selenium и TestNG... Как это сделали мы, какие потом получили выводы и результаты — все это я и хочу рассказать и показать
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.
• Все «нестандартные» компоненты могут
со временем сломаться.
• Совместимость между ними не всегда
хороша.