Используйте больше ярлыков

Я хотел бы предложить различие между ярлыком и хаком.

Ярлык:

  • Быстрый и функциональный прогресс в направлении долгосрочного и надежного решения.
  • Создает потолок функциональности. Чтобы добиться дальнейшего прогресса, в конечном итоге придется пересмотреть ярлык.
  • Не идеально, но на это есть причины.

Взлом - это:

  • Быстрый, функциональный прогресс в направлении хрупкого краткосрочного решения.
  • Это растяжка. Разработчик может сломать его, прикоснувшись к нему.
  • Не идеально и даже не рекомендуется.

Ярлык - это компромисс, который сразу же получает частичную функциональность, откладывая дорогостоящий (но «правильный») выбор до тех пор, пока ярлык не будет изменен, перенесен или переписан. Он также имеет известный потолок функциональности. Настанет день, когда ярлык окажется неадекватным.

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

Взлом

Вот один, который я видел слишком часто.

Предположим, ваше приложение хочет кэшировать на диске данные текущего пользователя, вошедшего в систему.

val user: User

В вашем распоряжении различные механизмы локального хранения, но для сериализации требуется много нажатий клавиш. Как насчет этого?

val userAsJsonString = user.toJson()
localStorage.putString(key = “USER”, value = userAsJsonString)

(Здесь localStorage могут быть общие настройки Android или любой другой механизм кэширования, существующий на вашей платформе.)

Похоже на взлом

❌ Хрупкий. Произойдет сбой при любой модификации типа User.

❌ Обходит существующие меры безопасности. Другие решения для хранения данных, такие как SQLite, позволяют выполнять миграцию при изменении схемы.

❌ Другие разработчики могли нарушить это, даже не зная об этом.

Ярлык

Как насчет этого?

val userId: String = currentUser.id
localStorage.putString(key = “USER_ID”, value = userId)

Вместо полной информации об объекте пользователя у нас есть только id. Это меньше, чем мы хотели, но также подходит для квадратного колышка с квадратным отверстием. Мы не пытаемся превратить полный User в хрупкое строковое представление.

Похоже на ярлык.

⚠️ Не идеал, но и не битый.

⚠️ Известное ограничение: вам нужно будет получить полную информацию о пользователе с помощью id.

✅ Частичная функциональность в сторону более надежного метода локального хранения.

✅ Не сломается, когда его коснется другой разработчик.

Выбирайте больше ярлыков, пишите меньше хаков.

Коллин пишет программное обеспечение и свой личный словарь слов на Livefront