Написал и забыл: или как пишут код аутсорсеры

в 8:33, , рубрики: android, android development, code review, outsourcing, Разработка под android

image
Недавно инспектировал код одного приложения и выписал список вопросов разработчикам с ответами.
Приложение основано на клиент серверном взаимодействии, с регистрацией и обновлением некоторых данных.


  • У нас же API 14 и выше? Ну и что, я знаю и использую support-library, где только могу.
  • В support-library есть ActionBar (молчим уже про API 14)? Ну и что, я знаю ActionBarSherlock.
  • Взаимодействие с web-командой по поводу улучшения API? Только время тратить, сделаем на том, что есть.
  • Проверить работу API использую RestClient или сниффер? Зачем, я в дебаггере посмотрю.
  • Взаимодействие с дизайнерами для соблюдения гайдов и улучшения UX? Они же 1 час в день доступны, мы не сможем общаться.
  • Типизация? Не слышал. Храним все в строках, когда надо преобразуем в нужные типы используя *.parse*.
  • База данных? Зачем? Сохраним все в SharedPrefs в JSON.
  • Повторное использование кода? Нафиг. Быстро копипастим и дальше кодить.
  • Кеширование данных? В топку, у нас же всегда есть подключенный интернет.
  • Отображение прогресса загрузки? В макетах нет.
  • Отображение ошибок загрузки? Да откуда там ошибки?
  • В API не выводятся ошибки? Так мы их и не отображаем.
  • Отключение интернета? Так не бывает.
  • Сервис для обновления данных пользователя? Так они и так в фоне обновляются AsyncTask-ами.
  • Зачем нужны AndroidAnnotations? Отличная тема! Надо использовать везде, где только можно! Все в Background, что бы ANR не было.
  • Очистка пользовательских данных при выходе из учетной записи? А что, кто-то выходить будет?
  • Проверять, что поля нет в JSON, не учитывать новые поля? Зачем, API же не меняется.
  • ShapeDrawable? Так фоны же дизайнер нарезал? Ну и что, что там белый прямоугольник.
  • А как же размер приложения? В 10Мб уложимся.
  • Fragments? Зачем? У нас же только телефоны.
  • Локализация? Да, вроде как приложение на испанском, но они же знают английский? Захардкодим сообщения, все и так поймут.
  • Форматирование строк? Это еще зачем? Умножим на 10, приведем к int-у и поделим на 10. Все будет ок!
  • А если нужен будет другой формат? Умножим на 100.
  • Формат дат? Захардкодим. Испанский же!
  • Повторное использование layout-ов, include? Долго! Лучше CTRL+c, CTRL+v
  • Тесты на разных разрешениях? У меня нет столько устройств.
  • Эмулятор? Эмулятор тормозит.
  • x86? Ну… это же надо разбираться, а времени-то нет.
  • ExpandableListView? Сложно и долго! Заинфлянчу ручками.
  • ProgressBar? Так по макетам он зеленый! Сделаем layout и ручками ширину выставим.
  • Что-то где-то крешится? Ок, try-catch поставим, зачем нам об этом знать.
  • А как тут понять, что можно свайпить? Так в макетах было.
  • MagicNumbers? ???
  • Вынести константы в одно место? Нет смысла, они же только один раз используются.
  • А вот эта константа в двух местах же есть? Это исключение, она не будет меняться.
  • Тут может быть много элементов. ArrayAdapter не сожрет всю память? Если сожрет, увеличим кучу.
  • Как насчет аналитики? Чего?
  • Как насчет сбора информации о крешах? Они будет видны в Google Play.
  • Как насчет сбора информации о крешах на этапе тестирования? Научитесь пользоваться adb logcat.
  • А если мы привлечем к тестированию еще каких-то людей? Научите и их.

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

Всем желаю быстро, хорошо и дешево!

Автор: dyap

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js