|
|
|
Правильный код
|
|||
|---|---|---|---|
|
#18+
Я программирую не очень давно, и сейчас столкнулся определенной проблемой, проблема не в написании рабочего кода, а в правильной архитектуре и разбивке.. Сразу скажу, это не работа, это для себя, в первую очередь для практики и более глубокого понимания.. Использую IDE Idea, из фреймворков только hibernate, с которым первый опыт, selenium, как парсер страниц, и для написания тестов, и maven, для подгрузки библиотек.. например есть кусок кода, работающий, он делает логин в аккаунт, выбирает все опубликованные книги, парсит все ASIN на странице, кликает переход на следующую страницу и снова парсит.. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. Код можно уменьшить раза в два, код не выполняет проверок, и т.д. Это понятно, реализован минимум, для проверки работоспособности, вопрос о разбивке кода. Глобально задача, автоматизация рутинных действий на аккаунте, и создание системы где хранились бы данные, генерировались отчеты и т.д. Парсить надо будет как аккаунт на наличие новых книг, состояния промо, наверное добавление книг, установка даты промо, загрузка данных о продажах, появление новых ревью, ранг книги и т.д. Я слышал, что для таких случаев начинающим нужен ментор, который бы посоветовал, как более правильно писать, но так, как его нет, и где найти идей тоже нет, вынужден обратится к сообществу. По коду выше, есть идея создать для работы с аккаунтом отдельный пакет, и в нем классы, да, это подсказка капитана :) В пакете класс для основных действий, авторизация, логаут, сохранение-загрузка куки, выбор типа драйвера селениума.. класс для собирания информации внутри аккаунта, там вышеописанное собирание всех ASIN, который будет идентификатором книги, (по нему генерирует линк на страницу продажи книги в амазоне, с которой в свою очередь будет парсится ранг, ревью, дата публикации, название и т.д.). А дальше вопрос, для установки промо, создавать новый класс, или сделать метод в существующем. Читал, что для удобства класс должен помещаться в размер экрана, но когда смотришь крутой код, да той же java, там классы и по 200 и по 300 строк.. Как то сумбурно получилось, в целом вопрос как сильно стоит дробить класс, стоит ли писать отдельные методы на 2 строчки кода, стоит ли отделять по методам(или классам) поиск элемента и вытаскивание значений регулярками. как более правильно Код: java 1. 2. 3. 4. или Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2016, 12:37 |
|
||
|
Правильный код
|
|||
|---|---|---|---|
|
#18+
liberumЧитал, что для удобства класс должен помещаться в размер экрана, не класс, а функция размер экрана и меньше. Хоть одну строку. Функция это самая маленькая атомарная часть БЛ. liberumстоит ли писать отдельные методы на 2 строчки кода см. выше liberumон делает логин в аккаунт, выбирает все опубликованные книги, парсит все ASIN на странице, кликает переход на следующую страницу и снова парсит.. Вот с этого и начинать. С ООП. Проектировать классы и их взаимосвязи - работу. Если логи в аккаунт, значит класс логина. Если там кода мало, то он и выбирает книги. Если он разросся, то потом в рефакторинге его разделишь на 2. Класс парсера обычно всегда отдельный. У него могут быть плагины-помощники-классы в зависимости от типа сайта. И т.д. Можно начать с главной функции main. Там вообще 2-3 строки нужно. Application - создать Application - Run - выполнить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2016, 12:58 |
|
||
|
Правильный код
|
|||
|---|---|---|---|
|
#18+
Petro123, main есть, точнее его нет, это веб приложение, уже есть регистрация, авторизация, сущности для книг, пользователей, аккаунта, hibernate все это сохраняет и загружает, через сервлеты это транслируется на веб страницы.. Знаю, что более правильно было бы использовать spring, но как говорится, одна проблема за раз, сейчас я осваиваю hibernate и selenium, с его довольно тяжелыми для моего понимания xpach.. Но я услышал, спасибо, методы небольшие, классы по необходимости.. Вопрос еще по 2 кусочкам кода что в конце, как более правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2016, 13:19 |
|
||
|
Правильный код
|
|||
|---|---|---|---|
|
#18+
liberumspring его потом, т.к. selenium - крутая штука. liberumВопрос еще по 2 кусочкам кода что в конце, как более правильно? насколько вижу, разницы в коде нет, только разбил на несколько строк и завернул в функцию? Тогда вар.1. И 4 строки не оптимизируют. Это уж слишком. IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2016, 13:42 |
|
||
|
Правильный код
|
|||
|---|---|---|---|
|
#18+
Послушай, Люк, правильный код это как сила. Послушай, Люк, ты должен почувствовать свою силу. Только она поможет тебе в борьбе с роем жуков. Не сдавайся, Люк. Никогда не сдавайся. Когда ты почувствуешь слабость, вспомни про силу, Люк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2016, 15:41 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39294536&tid=2123802]: |
0ms |
get settings: |
8ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
59ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 377ms |

| 0 / 0 |
