Pull to refresh
6
Karma
0
Rating
Илья Павловский @TranE91

Android Software Engineer

Стоп рефакторинг. Kotlin. Android

Это тот случай, когда разработчик втыкает любимые паттерны проектироавния с пользой и без пользы. Разлепить состояние письма и состояние уведомления не позволила религия, поэтому будем есть кактус.

Согласен, пример получился не совсем удачный(
Надеюсь, общий посыл возможных вариантов разруливания состояний удался.

предлагать заполнить поле не нужно, независимо от того, есть там значение или нет

Актуально в случае, когда `username` и `hasUsername` не коррелируют друг с другом. Если значения самодостаточны, несомненно стоит использовать что-то из «Отряда булевых флажков».

Костыль же.

Не совсем понял Вашу идею. Могу ли попросить описать более подробно?

Стоп рефакторинг. Kotlin. Android

Если бы можно было бы все описать, у нас уже не было бы работы)

надо по возможности заглядывать в будущее и предсказывать возможные изменения требований в разумных пределах. А чтобы это делать — надо просто быть умным.

Старайтесь ставить под сомнение что-то неизвестное и до конца непонятное, ответ придет быстрее. Если ответа нет, зарезервируйте место на неизвестное.
И, как бы грубо это не звучало, воруйте) Воруйте идеи из других продуктов) «Вот почему у них это есть, а у нас нет?»

Блокировка двойного клика. Велосипед?

uiHandler.postDelayed(() -> locked = false, lockTimeMs);


Не забывайте терминейтить Handler при Lifecycle.destroy ивенте.

Блокировка двойного клика. Велосипед?

> Java. Java не имеет экстешенов. Давайте придерживаться темы и заданных условий.
Наследование?
class OnBlockedClickListener extends OnClickListener {
    @Override
    public void onClick(View v) {
       // Творим что хотим
   }
}

Блокировка двойного клика. Велосипед?

> Но это же будет работать только для наследников View?
Разве View не является корневым классом в иерархии виджетов Android?

> Мою реализацию так же можно использовать при клике на Item в ListView.
Можно ли по-подробнее, что Вы подразумеваете под Item?

Блокировка двойного клика. Велосипед?

Грубо как-то так:
private val LAST_CLICK_TIME_KEY = R.id.last_click_time

fun View.setOnBlockedClickListener(
    blockTime: Duration = 500.toDuration(DurationUnit.MILLISECONDS),
    listener: (View) -> Unit
) {
    this.setOnClickListener { view ->
        val lastClickTime = view.getTag(LAST_CLICK_TIME_KEY) as? Duration
        val currentTime = SystemClock.elapsedRealtime().toDuration(DurationUnit.MILLISECONDS)
        view.setTag(LAST_CLICK_TIME_KEY, currentTime)
        if (lastClickTime == null || currentTime - lastClickTime > blockTime) {
            listener(view)
        }
    }
}

Блокировка двойного клика. Велосипед?

А не проще ли написать extension функцию для View в которой фильтровать клики наружу?
Или свой экземпляр расширяющий OnClickListener с тэгированием объекта через View.

ПШЕ AndroidStudio или как использовать VCS Tools по полной

Это больше на другую статью тянет. Проблема в том, что знакомые мне GUIни, не поддерживают форму работы с git hook-ами(хотя я и сам слабо представляю как это можно «продать» красиво). Подробно описано здесь.

Именно как настроить формирование commit-message по шаблону?

Подключите pre-commit hook, проанализируйте входящее сообщение и доработайте его. Пример можно найти здесь.

И может ли сформированное сообщение появляться в окошке commit changes перед комитом?

Да, можно все что угодно. На что хватит Вашей фантазии.
На одном проекте, видел хуки, которые вырезали номер задачи из наименования ветки(а на ее формирование стояли свои правила) и подставляли префикс номера задачи в коммит мессадж.

ПШЕ AndroidStudio или как использовать VCS Tools по полной

IMHO, порочная практика. Она маскирует реальную картину происходящего

Можете пояснить мысль?

У нас был спор, про обратную сторону. Поясню на грубом примере — Мы долгое время спорили, можно ли рабочий код и его тестирование разделять отдельными коммитами? Лучше так не делать. Когда вы решаете откатить фичу, то прыгая по хистори коммитов, очень легко погрязнуть в фантазии автора и забыть вырезать некоторые части. Те ваша функциональность и ее тестирование должны быть поданы одной неделимой частью.
А в тему реальной картине происходящего — тут скорее про правильную декомпозицию задач стоит вести речь.

ПШЕ AndroidStudio или как использовать VCS Tools по полной

Да, Вы абсолютно правы.
Я лишь хотел обратить внимание на то, где хранятся такие настройки и что файл с настройками легко может попасть под юрисдикцию .gitignore

ПШЕ AndroidStudio или как использовать VCS Tools по полной

Компромисс — работай 8 часов, пиши код 4.

ПШЕ AndroidStudio или как использовать VCS Tools по полной

В корне с Вами несогласен. Писать код/документацию/структурировать процесс и результат — это все есть результат вашей работы. Писать код — это одна часть повседневных будней.

ПШЕ AndroidStudio или как использовать VCS Tools по полной

Да, Вы правы, спасибо. Исправил, совсем забыл про смежные продукты.

Android Environments

Такой подход не решает основной проблемы — избавление от бойлерплейта.
За ней же следует пораждающая проблема поддержки.

Information

Rating
5,810-th
Location
Минск, Минская обл., Беларусь
Date of birth
Registered
Activity