Что не так в моем коде, и как подтянуть навыки?

Отправил тестовое задание на позицию Android разработчика, но в ответ они написали:

После ознакомления с тестовым заданием, мы отметили, что у вас недостаточный уровень знания принципов ООП и принципов построенийAndroid-приложений.
Если вы подтянете свой уровень знаний, лучше изучите ООП и каким образом применять его принципы для построения приложений, то мы могли бы вернуться к вопросу рассмотрения вашей кандидатуры в будущем.


Я самоучка, учился по книгам, статьям и т.д. , можете опытным глазом посмотреть что в моем коде не так в плане ООП и принципов построения? И как апргрейдить эти навыки?
Код на gitHub, т.к. классов не один и не два https://github.com/Vlad161/Products
  • Вопрос задан
  • 3090 просмотров
Решения вопроса 3
onepavel
@onepavel
Консультация и разработка мобильных приложений
Тебе все правильно написали.
Мой тебе совет лезть в гитхаб, качать оттуда проекты и смотреть их механику.
Прежде чем лабать код смотрим на исходные данные.
У тебя это json, открываем и смотрим.
Мы видим массив одинаковых объектов. Для нашего удобства
сообразим класс под json'овские данные
class Product {
int id;
String name;
String picture;
String description;
}

Теперь нам нужно в активити их распарсить в список.
У тебя есть объект с методом
new JSONReadFromAsset().readJsonFromAsset(getApplicationContext());

который возвращает json массив, а если заказчик завтра даст два таких файла !?
мы же не хотим копипастить, а сделаем универсально и метод парсера будет возвращать сразу массив объектов, а не json данные и тогда мы выкинем лишние сущности
ArrayList<String> nameList = new ArrayList<String>();
ArrayList<Integer> idList = new ArrayList<Integer>();

а вставим только один список
List<Product> mDataList
и тогда мы будем получать данные
mDataList = JSONReadFromAsset.readJsonFromAsset(getApplicationContext(),"questions.json");

Сделаем readJsonFromAsset статиком, так как JSONReadFromAsset ничего в себе не несет.
в readJsonFromAsset должно быть что-то, вроде, такого
readJsonFromAsset() {
List<Product> dataList = new LinkedList();
for () {
Product product = new Product();
obj = jsonArray.getJSONObject(position);
product.id = obj.getInt("id");
product.name = obj.getString("name");
product.description = obj.getString("description");
product.picture = obj.getString("picture");
dataList.add(product);
}
return dataList; 
}

вместо методов getString, getInt я предпочитаю использовать optString, optInt
Вариантов парсинга данных много, можно изворачиваться по разному.
А что бы показать что ты крут, можно сделать класс Product Parcelable
и не передавать пачку строк через бандл в интенте, а передать сразу Product объект.
bundle.putParcelable(SomeActivity.PRODUCT, mDataList.get(position));

В другом активити принять и с ним работать.

Можно вот так сделать
public static final String LINK = "ironwaterstudio.com";
и поместить в легко доступное место или завести отдельный класс
class Static {
public static final String LINK =  "http://ironwaterstudio.com";
}

AlertDialog - насколько тебе необходимо обрабатывать setNegativeButton, попробуй не передавать обработчик кнопки, а сунуть null
Ответ написан
Это стандартный ответ менеджеров-разработчиков, повёрнутых на ООП. Не обращайте внимание и ищите другую организацию для трудоустройства. В этой организации Вам нечего ловить.

Дело в том, что ООП предполагает множество подходов решения одной и той же задачи. А повернутые на ООП считают свой подход "самым правильным". Фактически, выполнение тестового задания похоже на "угадайку".
Ответ написан
aratj
@aratj
программер.
согласен с предыдущим оратором.

вроде есть некие сущности , как продукты.

но нет их моделей.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@hummerd
А по каким книгам вы учились? Классика прочитана?

Стив Макконнелл Совершенный код = Code complete. — СПб.: Питер, 2005. — С. 896. — (Мастер-класс). — ISBN 5-7502-0064-7, 5-469-00822-3

Мартин Фаулер Шаблоны корпоративных приложений (Signature Series) = Patterns of Enterprise Application Architecture (Addison-Wesley Signature Series). — М.: «Вильямс», 2012. — 544 с. — ISBN 978-5-8459-1611-2

Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес Приемы объектно-ориентированного проектирования. Паттерны проектирования = Design Patterns: Elements of Reusable Object-Oriented Software. — СПб: «Питер», 2007. — С. 366. — ISBN 978-5-469-01136-1 (также ISBN 5-272-00355-1)

Гради Буч, Роберт А Максимчук. Объектно-ориентированный анализ и проектирование с примерами приложений (3-е издание) 2008 ISBN: 978-5-8459-1401-9
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы