RSS-читалка на обзор.

Размещайте ссылки на ваши собственные приложения с целью пиара или для бета-тестирования.
Правила форума
О возможности разместить информацию о вашем приложении на главной странице сайта читайте здесь: http://startandroid.ru/ru/about/pomosch ... henii.html
Ответить
Oleg_Sl
Сообщения: 4
Зарегистрирован: 31 июл 2013, 11:09
Откуда: Беларусь, г.Минск

RSS-читалка на обзор.

Сообщение Oleg_Sl » 31 июл 2013, 14:56

Добрый день.
Начал изучать Android, в качестве учебного приложения выбрал RSS-читалку.
Хотел бы попросить участников форума оценить работу.

Кратко опишу приложение:
1) Главный экран: список сохраненных rss-лент, добавление через menu-->add.
Загрузка картинок в AsyncTask; самописный адаптер, потомок SimpleCursorAdapter.
2) После клика по ленте появляется список новостей.
Картинки из новостей порезаны.
3) Клик --> полный текст новости.
TextView использован сознательно вместо WebView, т.к. за основу ТЗ было взято тестовое
задание из одной софтварной компании и использование WebView было запрещено.
4) Парсинг xml посредством XMLPullParser.

Запускал на железе с 2.2.

Вот вкратце и все.

Что хотелось бы узнать:
1) степень читаемости кода, соблюдение Android-"?идеологии?";
2) захотелось сменить специализацию, насколько это приложение будет смотреться в резюме на должность Android-junior'a?
Что Вам кажется неприемлемым, жутко режущим глаз?
3) вопрос от самолюбия: "Оцените, пожалуйста, качество исполнения / сложность задачи по 10-бальной шкале, где 1 - хелловорлд, 10 - работа "среднего по больнице" :-) разработчика с опытом 2 года в Android";

P.S. Сейчас профессионально (читать как получаю за это зарплату) занимаюсь разработкой встраиваемой электроники, схемотехника-печатные платы + программирование 8-ми разрядных микроконтроллеров на С, поэтому и интересует оценка людей, привыкших к ООП и языкам высокого уровня.


P.P.S. Есть пара вопросов, для которых нужно прикреплять достаточно много кодов-логов. Их можно оставить в этой теме?

Заранее спасибо за ответ.
Вложения
FeedReader.zip
FeedReader.apk
(205.27 КБ) 220 скачиваний
files.zip
исходники
(392.1 КБ) 274 скачивания

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: RSS-читалка на обзор.

Сообщение rezak90 » 31 июл 2013, 21:04

Сейчас пройдусь по коду:
  • имя пакета com.example.feedreader хотя бы example убрал бы
  • юзать уже желательно фрагменты и фрагмент активити
  • активити называется FeedReader, именование не логичное... я когда ищу активити (или другой контрол) то ожидаю увидеть в конце его имя
  • разбивать на методы нужно разный функционал, например в onCreate идёт инициализация вьюшек, заполнение данными и т.д., в обще всё в куче
  • загрузку картинок видимо пытался в адаптере сделать асинхронно, по коду вижу что работать не будет, запущу приложуху позже что бы убедится
  • загрузка картинок даже если происходит то размер не меняется их, а если придёт размером 1980х1280 ?
  • заметил что catch не все обрабатываются
  • по дизайну отпишусь позже но уверен что уже ни куда не годится
  • просто использовать AlertDialog не очень рекомендуется, рекомендуется использовать связку FragmentDialog + AlertDialog
  • жесть делать парселейбл объект ещё и с битмапом))) во-первых это медленная операция сериализация и десериализация, во-вторых ну логичней же передать ссылку на новость в активити и загрузить уже полную новость там, даже если картинку влом перекачивать и т.д., то её же можно локально сохранить и потом в детальной активити вытянуть
  • ага перешёл к след. активити, теперь вообще потерялся, передали новость или не совсем понять что именно, а из этого объекта нужна лишь урла... вопрос тогда зачем передавать весь объект?
  • почему используется именно XmlPullParser? Не целесообразно здесь использовать, хотелось бы услышать аргументированный ответ
  • не вижу проверок на интернет соединение
  • для загрузок используется URL класс, не очень красиво, лучше использовать апачевские классы, они очень гибкие, там хотя бы таймаут можно настроить на соединение и много ещё чего
  • опять задачи разбивать на более мелкие методы а не всё в куче (это редко попадается но есть такое)
  • всё в одном пакете, нужно разбивать на пакеты
по дизайну чуть позже отпишусь:
  • ресурсники мало, а точнее вообще не используются (хранить в ресурсниках нужно не только текст а и величины и цвета и стили если есть)
  • запустил приложуху... белый экран и всё))) вот такой вот обзор
но вполне уверен что дизайна там никакого нету, может быть примитивный... нету actionbar'a, всё на активити построено, юзается контекстное меню которое ушло на пенсию ещё год назад =)

Мой вывод, я бы не взял на работу, ещё чуток по-тренеруешся и уже что то будет... в любом случае не всё так ужасно, продолжай дальше!
R.id.team
Политика на форуме запрещена

Oleg_Sl
Сообщения: 4
Зарегистрирован: 31 июл 2013, 11:09
Откуда: Беларусь, г.Минск

Re: RSS-читалка на обзор.

Сообщение Oleg_Sl » 01 авг 2013, 09:35

Спасибо за конструктивную критику.

Читал отзыв в транспорте, пропустил свою остановку).
имя пакета com.example.feedreader хотя бы example убрал бы
всё в одном пакете, нужно разбивать на пакеты
Приложение учебное, решил что пакет example подходит. Разбивка на пакеты нужна, насколько я понял java, для повторного использования кода в других приложениях. Пересмотрел еще раз примеры, идущие с sdk, там все в одном пакете. Не могли бы дать рекомендации или ссылку на материал с описанием логики разбития по пакетам в андроид-приложении? Сам пока не особо могу представить что-либо.
жесть делать парселейбл объект ещё и с битмапом))) во-первых это медленная операция сериализация и десериализация, во-вторых ну логичней же передать ссылку на новость в активити и загрузить уже полную новость там, даже если картинку влом перекачивать и т.д., то её же можно локально сохранить и потом в детальной активити вытянуть
Картинка из класса Channel действительно нигде не используется, в том числе и в сериализации. Передаю полный объект для, ну скажем так, более простой модернизации приложения.
Вопрос: неужели передача n-строк напрямую в Intent настолько быстрее передачи этих же n-строк через Parcelable? Если вернуться к коду, то я понимаю, что одна строка в Intent отработает быстрее чем 5 строк в Parcelable, но интересен общий случай. В документации на Parcelable указано что этот интерфейс оптимизирован по сравнению с Serializable. Ещё вопрос: какие инструменты лучше использовать для измерения времени выполнения участка кода, да и мониторинг используемой памяти тоже интересует (это на будущее).
почему используется именно XmlPullParser? Не целесообразно здесь использовать, хотелось бы услышать аргументированный ответ
Боялся этого вопроса ). Во время знакомством с XML-парсерами руководствовался статьей http://www.ibm.com/developerworks/ru/library/x-android/. Выбирал между SAX и XMLPullParser-ом. Выбрал последний. Ещё раз перечитал, понял, что в существующем виде сделал неверный выбор. Попробую сделать добавление новостей с ShowChannelActivity "на лету", сразу по окончанию разбора конкретной записи в xml-файле. Для сравнения реализую и SAX.
белый экран и всё)))
Ага, сам всегда пугаюсь :-) Забыл включить в ресурсы БД с парой каналов. На всякий случай, добавление такое: menu --> add --> вводим ссылку, http://bash.im/rss или http://habrahabr.ru/rss/best например. Необходимость вводить в начале "http:// " уберу, пока решил узнать генеральную линию доработок.

Еще раз спасибо за потраченное время и полезные советы.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: RSS-читалка на обзор.

Сообщение Foenix » 01 авг 2013, 15:28

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

Код: Выделить всё

<ViewStub
            android:id="@android:id/empty"
 			android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout="@layout/empty" />
а в активити сделать примерно такое

Код: Выделить всё

View vEmpty = findViewById(android.R.id.empty);
lvSpisok.setEmptyView(vEmpty);
Тогда будет не белый экран, а осмысленный.
Ну или если не хочется с этим замрачиватсья, можно сразу при пустом листе перекидывать пользователя на диалог добавления данных.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Oleg_Sl
Сообщения: 4
Зарегистрирован: 31 июл 2013, 11:09
Откуда: Беларусь, г.Минск

Re: RSS-читалка на обзор.

Сообщение Oleg_Sl » 05 авг 2013, 10:29

Спасибо за совет.

Ответить