Добрый день.
Начал изучать 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. Есть пара вопросов, для которых нужно прикреплять достаточно много кодов-логов. Их можно оставить в этой теме?
Заранее спасибо за ответ.
RSS-читалка на обзор.
Правила форума
О возможности разместить информацию о вашем приложении на главной странице сайта читайте здесь: http://startandroid.ru/ru/about/pomosch ... henii.html
О возможности разместить информацию о вашем приложении на главной странице сайта читайте здесь: http://startandroid.ru/ru/about/pomosch ... henii.html
RSS-читалка на обзор.
- Вложения
-
- FeedReader.zip
- FeedReader.apk
- (205.27 КБ) 220 скачиваний
-
- files.zip
- исходники
- (392.1 КБ) 275 скачиваний
Re: RSS-читалка на обзор.
Сейчас пройдусь по коду:
Мой вывод, я бы не взял на работу, ещё чуток по-тренеруешся и уже что то будет... в любом случае не всё так ужасно, продолжай дальше!
- имя пакета com.example.feedreader хотя бы example убрал бы
- юзать уже желательно фрагменты и фрагмент активити
- активити называется FeedReader, именование не логичное... я когда ищу активити (или другой контрол) то ожидаю увидеть в конце его имя
- разбивать на методы нужно разный функционал, например в onCreate идёт инициализация вьюшек, заполнение данными и т.д., в обще всё в куче
- загрузку картинок видимо пытался в адаптере сделать асинхронно, по коду вижу что работать не будет, запущу приложуху позже что бы убедится
- загрузка картинок даже если происходит то размер не меняется их, а если придёт размером 1980х1280 ?
- заметил что catch не все обрабатываются
- по дизайну отпишусь позже но уверен что уже ни куда не годится
- просто использовать AlertDialog не очень рекомендуется, рекомендуется использовать связку FragmentDialog + AlertDialog
- жесть делать парселейбл объект ещё и с битмапом))) во-первых это медленная операция сериализация и десериализация, во-вторых ну логичней же передать ссылку на новость в активити и загрузить уже полную новость там, даже если картинку влом перекачивать и т.д., то её же можно локально сохранить и потом в детальной активити вытянуть
- ага перешёл к след. активити, теперь вообще потерялся, передали новость или не совсем понять что именно, а из этого объекта нужна лишь урла... вопрос тогда зачем передавать весь объект?
- почему используется именно XmlPullParser? Не целесообразно здесь использовать, хотелось бы услышать аргументированный ответ
- не вижу проверок на интернет соединение
- для загрузок используется URL класс, не очень красиво, лучше использовать апачевские классы, они очень гибкие, там хотя бы таймаут можно настроить на соединение и много ещё чего
- опять задачи разбивать на более мелкие методы а не всё в куче (это редко попадается но есть такое)
- всё в одном пакете, нужно разбивать на пакеты
- ресурсники мало, а точнее вообще не используются (хранить в ресурсниках нужно не только текст а и величины и цвета и стили если есть)
- запустил приложуху... белый экран и всё))) вот такой вот обзор
Мой вывод, я бы не взял на работу, ещё чуток по-тренеруешся и уже что то будет... в любом случае не всё так ужасно, продолжай дальше!
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: RSS-читалка на обзор.
Спасибо за конструктивную критику.
Читал отзыв в транспорте, пропустил свою остановку).
Вопрос: неужели передача n-строк напрямую в Intent настолько быстрее передачи этих же n-строк через Parcelable? Если вернуться к коду, то я понимаю, что одна строка в Intent отработает быстрее чем 5 строк в Parcelable, но интересен общий случай. В документации на Parcelable указано что этот интерфейс оптимизирован по сравнению с Serializable. Ещё вопрос: какие инструменты лучше использовать для измерения времени выполнения участка кода, да и мониторинг используемой памяти тоже интересует (это на будущее).
Еще раз спасибо за потраченное время и полезные советы.
Читал отзыв в транспорте, пропустил свою остановку).
имя пакета com.example.feedreader хотя бы example убрал бы
Приложение учебное, решил что пакет example подходит. Разбивка на пакеты нужна, насколько я понял java, для повторного использования кода в других приложениях. Пересмотрел еще раз примеры, идущие с sdk, там все в одном пакете. Не могли бы дать рекомендации или ссылку на материал с описанием логики разбития по пакетам в андроид-приложении? Сам пока не особо могу представить что-либо.всё в одном пакете, нужно разбивать на пакеты
Картинка из класса Channel действительно нигде не используется, в том числе и в сериализации. Передаю полный объект для, ну скажем так, более простой модернизации приложения.жесть делать парселейбл объект ещё и с битмапом))) во-первых это медленная операция сериализация и десериализация, во-вторых ну логичней же передать ссылку на новость в активити и загрузить уже полную новость там, даже если картинку влом перекачивать и т.д., то её же можно локально сохранить и потом в детальной активити вытянуть
Вопрос: неужели передача n-строк напрямую в Intent настолько быстрее передачи этих же n-строк через Parcelable? Если вернуться к коду, то я понимаю, что одна строка в Intent отработает быстрее чем 5 строк в Parcelable, но интересен общий случай. В документации на Parcelable указано что этот интерфейс оптимизирован по сравнению с Serializable. Ещё вопрос: какие инструменты лучше использовать для измерения времени выполнения участка кода, да и мониторинг используемой памяти тоже интересует (это на будущее).
Боялся этого вопроса ). Во время знакомством с XML-парсерами руководствовался статьей http://www.ibm.com/developerworks/ru/library/x-android/. Выбирал между SAX и XMLPullParser-ом. Выбрал последний. Ещё раз перечитал, понял, что в существующем виде сделал неверный выбор. Попробую сделать добавление новостей с ShowChannelActivity "на лету", сразу по окончанию разбора конкретной записи в xml-файле. Для сравнения реализую и SAX.почему используется именно XmlPullParser? Не целесообразно здесь использовать, хотелось бы услышать аргументированный ответ
Ага, сам всегда пугаюсь Забыл включить в ресурсы БД с парой каналов. На всякий случай, добавление такое: menu --> add --> вводим ссылку, http://bash.im/rss или http://habrahabr.ru/rss/best например. Необходимость вводить в начале "http:// " уберу, пока решил узнать генеральную линию доработок.белый экран и всё)))
Еще раз спасибо за потраченное время и полезные советы.
Re: RSS-читалка на обзор.
если список чего-то на экране пустой, то можно и не добавлять данных, которых пользователь сам не добавил пока, а списку подсунуть специальный "пустой" 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
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: RSS-читалка на обзор.
Спасибо за совет.