Это в первую очередь демонстрация подхода, техническая реализация только, чтобы попробовать сам подход, посмотреть взлетит или нет, без over-engineering: конкретно на Вашем проекте какие есть сложности, особенности. В продакшене совсем другой код - это проект-поделка.
Про большее из зол(UX) - большая часть презентации.
Конкретизируй, что именно сыро.
Что не так? А как надо?
P.S. Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
То, что вы выносите платформенные детали реализации в степы:
Steps
def perform_some_action():
if config.test_run.IS_MOBILE:
if config.test_run.IS_ANDROID:
if config.test_run.PLATFORM_VERSION < 25:
item.tap()
else:
item.longPress()
if config.test_run.IS_IPHONE
item.swipeLeft()
if config.test_run.IS_IPAD
item.doubleTap()
else:
item.click()
Пример синтетический - но на практике все может быть гораздо хуже.
Когда так разрастается (вообще какой угодно продукт, код) -> рефакторинг - это естественно(тут выбираете вариант по вкусу, чтобы вы кстати выбрали?). Можно заранее конечно, но это риск написать лишних ненужных абстракций. Да и опять же для демонстрации…
А вообще степы в данном подходе как раз для описания разного UX и используются и именно в разрезе этого слоя и можно посмотреть насколько отличается поведение на разных платформах.
Слишком сложно (как в этой синтетике) -> да я охерею, как пользователь, если у меня на телефоне и планшете постоянно надо разные действия совершать, повод задуматься, может это UX баг? Мы кстати ловили какие-то несогласованности именно когда какие-то методы в степах разрастались, общались, приходили к выводу, что пользователь будет несчастен и потом исправляли.