имею, как и права тут выступать. Вас предупреждали — вы сами пришли. Тут будет rant не то, что джуна, а вообще трэйни. Еще раз, внимательно, вы слушаете сейчас доклад человека, который еле-еле Gradle осилил (как он тогда думал) за неделю коллективными силами чатика на 50 человек, о чем вообще идет речь? Это абсолютно многострадальная презентация и должна она была выйти еще полгода назад, поэтому тут Франкенштейн из первоначальной версии презентации (Internal), той самой (с) и добавлений в последний момент за день до МосДроида. Если ты джун с горящими глазами — не лезб, оно тебя сожретб!
сложнее Хороший, качественный код Отсутствие возможности работы с Accessibility JSCore — iOS / Android — ВИРТУАЛЬНАЯ МАШИНА LLVM-несовместимый? “Свой компонент” — даже TextView Royalty? GroundBreaking Changes Future-Proof? Security? Возможность писать без участия Native разработчиков Не может в сторонние библиотеки Ограничения использования API Быстродействие Актуализация кодовой базы – React Native Immaturity - непредсказуемые задержки из-за сырости – Maintaining a Fork of React Native - пришлось делать форк RN и дорого его поддерживать – JavaScript Tooling - сложно масштабировать написанное на JS – Refactoring - тяжело рефакторить RN код – JavaScriptCore inconsistencies - нет JSCore на Android – React Native Open Source Libraries - кривые либы – Parallel Infrastructure and Feature Work - пришлось с нуля наводить мосты между компонентами на RN
сырости – Maintaining a Fork of React Native - пришлось делать форк RN и дорого его поддерживать – JavaScript Tooling - сложно масштабировать написанное на JS – Refactoring - тяжело рефакторить RN код – JavaScriptCore inconsistencies - нет JSCore на Android – React Native Open Source Libraries - недостаточная поддержка – Parallel Infrastructure and Feature Work - пришлось с нуля наводить мосты между компонентами на RN – Crash Monitoring - не все креши приходили в систему и тяжело дебажились – Native Bridge - не стабильна интеграция с нейтивом – Initialization Time - долго запускается аппа – Initial Render Time - рендер дольше из-за чего мигает UI – App Size - бинарник тяжелее – 64-bit - 64бита на андроиде пока невозомжно – Gestures - приходится отключать сложные жесты – Long Lists - лагают длинные списки – Upgrading React Native - тяжелый апдейт с версии на версию – Accessibility - слабо поддерживаются режимы для инвалидов – Troublesome Crashes - невозпроизводимые креши – SavedInstanceState Across Processes on Android - невозможность сохранить стейт при выключении из фона
} var title: String { get } var abbreviation: String { get } var colorIndex: Int { get } var type: Type { get } } enum Type { case unknown case user(_ id: String) case group } interface RoomProfile { val profileID: String val title: String val abbreviation: String val colorIndex: Int val type: Type } sealed class Type { object Unknown: Type() class User(val id: String): Type() object Group: Type() }
String { val string = StringBuilder() for (s in this) { if (string.isNotEmpty()) { string.append(separator) } string.append(s) } return string.toString() } fun String.replacingOccurrences(of: String, with: String) = replace(of, with)
* Android Studio & IDEA have different behaviour * Lack of documentation * Examples don’t match documentation * Heisenbugs, Bohrbugs, Mandelbugs * And more…