Если Вы поставили себе цель стать крутым Java-кодером и только начинаете свой путь с JavaRush, если Ваша цель получить максимум пользы от данного ресурса, а не бесполезное прожигание времени путем бездумного "отстреливания" задачек - этот топик для Вас.
Скажу честно, к написанию этого слегка брюзжащего поста меня подстегнула задача level05.lesson12.bonus03, а точнее один и тот же бесконечный вопрос возникающий буквально каждый день, а то и несколько раз в день в соседних топиках. Встречая очередной "крик о помощи" задумываешься, ну неужели человеку проще написать вопрос и ждать ответа неопределенное время, чем опустить взгляд на строчку ниже и прочитать то, что писалось уже не единожды.
Итак, предлагаю Вам свой алгоритм работы с заданиями JavaRush. Все изложенное ниже выработано на собственном опыте и опыте других студентов.
Решаем задачу самостоятельно.
- Внимательно читаем задание до конца. Не единожды замечал за собой, читаешь задание, где-то к середине в голове уже начинает складываться решение, воодушевленный тем, "какой Я умный" пишешь код, жмешь заветную кнопку и видишь - «Программа не прошла тестирование». Epic fail.
- Проверяем общий вид задачи. Убеждаемся что мы не меняли имена пакетов, классов, методов полученных с сервера, а новые методы, классы, пакеты созданы согласно заданию (если это оговорено). При сдаче на проверку в задаче не должно быть задокументированных кусков кода, текстовые коментарии не содержащие кода допустимы.
- Перечитываем условия задачи. Да, перечитываем его до тех пор, пока Вы не будете полностью уверены что поняли его верно и разночтения исключены. После этого возвращайтесь к задаче. Обязательно учтите что входные данные указанные в задании даются именно для примера, а не как исчерпывающее условие. При тестировании придумывайте свои данные, используйте граничные данные, пустые значение, null и прочие варианты которые могут подсунуть Вашей программе. Адекватного ответа от сервера, что же ему не понравилось, Вы не дождетесь, надейтесь только на себя.
- Итак, на Ваш взгляд задача работает правильно, корректно обрабатывают любые входящие данные, ответ тоже дает правильный, но сервер ее не принимает... Проверяйте вывод! Тут важно все, порядок ввода/вывода строк в консоль, вспомогательные сообщения, которые Вы добавили чтобы "программа была более красивой", лишний пробел в конце вполне может поставить крест на всей задаче. На данном этапе, наша с Вами задача научиться правильно решать поставленные задачи, а не создавать красивые программы с дружественным интерфейсом. Вообще, рекомендую хотя бы поверхностно ознакомиться с теорией тестирования программ. Хотя бы для того, чтобы хоть чуть-чуть представлять что может происходить с Вашей программой на сервере при проверке, как она может проверяться, и что в Вашей задаче может препятствовать успешному прохождению тестирования.
- Пункт желательный, но не обязательный к исполнению, так сказать уровень Nightmare. Представьте, что это задача не Ваша, а кто-то попросил Вас найти в ней ошибку. Поработайте компилятором, прогоните мысленно весь жизненный цикл программы в голове. Очень часто при подобном подходе можно заметить узкие места программы.
Ищем помощи.
Итак, мы крутили задачу и так и сяк, но каменный цветочек не выходит, есть вопросы по заданию, не понятен алгоритм, сомневаетесь в выходных данных (сюда можете добавить свои пункты).- Не спешите создавать новую тему или писать Ваш вопрос в пером попавшемся топике!
Поверьте, 90% всех возникающих у Вас вопросов уже кто-то задавал до Вас и на них уже были даны ответы. Еще на 9% вопросов можно найти ответы на просторах интернета. Обычно, на поиск ответа на возникший вопрос уходит не больше 15 минут. В любом случае, ответ найденный самостоятельно принесет Вам гораздо больше пользы.
Самый простой способ получить ответы на Ваши вопросы.
Попутно Вы получите разъяснения задания, ссылки на теоретический материал, ознакомитесь с различными подходами к решению данной задачи, найдете кучу тестовых данных и просто познакомитесь с другими "жителями" этого форума. - Давайте уважать друг друга! Если Вы не выполнили первый пункт, не стоит просить других пользователей предоставить Вам тестовые данные или найти ошибку в Вашей программе. Никому не интересно по десять раз писать одно и то же или работать Вашим личным гуглом. Итак, Вы искали, но не нашли, или нашли, но не знаете как исправить. Как правильно задать вопрос?
- Не создавайте новую тему, если есть существующие! Да, это не запрещено правилами форума, но подумайте о следующих студентах идущих по Вашим стопам. Думаю, гораздо проще найти ответы в одной ветке форума нежели в паре десятков.
- Публикуя свой исходный код, делайте это полностью! Да, включая задание, package, import и прочее. Ошибка может затесаться где угодно, а задание поможет отвечающему быстрее войти в курс дела, не тратя силы и время на выяснение о чем вообще идет речь.
- Правильно оформляйте свой код!
Неформатированный код очень сильно затрудняет чтение и понимание, этим Вы ускорите получение ответа. - Перед публикацией, попытайтесь упростить Ваш код. Если код содержит какие-либо "хитрые" моменты, прокомментируйте их. Учитывайте, что другому человеку придется прочитать и понять Ваш код.
- Постарайтесь быть как можно точнее в постановке вопроса. Как бы не смешно это звучало, но порой требуется переводчик "с русского на русский".
- Ну и на по следок. Будьте вежливы независимо от полученного ответа. ;)
Попутно Вы получите разъяснения задания, ссылки на теоретический материал, ознакомитесь с различными подходами к решению данной задачи, найдете кучу тестовых данных и просто познакомитесь с другими "жителями" этого форума.
Неформатированный код очень сильно затрудняет чтение и понимание, этим Вы ускорите получение ответа.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ