-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
AnimalsInfoApplication
- Для получения Worker-а ты кастишь приложение к интерфейсу. Для получения Storage-а -- почему-то нет. Предлагаемое решение: приложение реализует интерфейс ModelProvider, который объявляет get-методы для тех моделей, что тебе необходимы.
AnimalStorage:
- Уведомление об изменении контента происходит (внезапно) в read-методе.
DataBaseLoaderFunctions:
- Ты совершаешь операции над животными -- и почему-то константы имеют суффикс USER.
SQLiteAnimalsDao:
- Минорное замечание: оптимальней и безопасней прописывать раздельно selection и selectionArgs. ОК, тут повезло -- тут только айдишник. Завтра будет строка -- и простор для SQL-инъекции.
- У тебя тип животного хранится как string (enumValue.toString()). Такое решение оказывается нестойким к обфускации. Предпочтительней enum-ы хранить как int-ы (enumValue.ordinal()).
AddNewAnimalActivity:
- Название не указывает, что в активити может происходить редактирование животного.
- Неожиданная и нестойкая логика определения режима "редактируемости" -- по наличию extras в интенте. Завтра тебе потребуется extra-информация в режиме добавления -- и логика поломается.
- Нет смысла заводить переменную cachedAnimals только для того, чтоб её постоянно редактировать, не считывая после этого информацию (считываешь с неё информацию только 1 раз -- при вычитке Animal из интента).
DataBaseWorker:
- При уведомлении у тебя может возникнуть состояние гонки. Во-первых, cachedData может измениться не только в loadUsers(). Во-вторых, одновременная запись и чтение callbackWeakReference из разных тредов может вызвать ошибку. В том числе, метод коллбэка onLoadFinished() может вызваться уже после того, как твой активити проставил слушатель null и уничтожился.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels