|
|
|
Покритикуйте код. Заход 2
|
|||
|---|---|---|---|
|
#18+
GaraZа как лучше сделать? не испотльзовать один класс дя доступа к другим а передавать их все в конструктор (Допустим MainForm) Inversion of Control -> Dependency Injection GaraZКогда из Дерева удаляем ноду - фокус должен переместится на следущую или на первую - если удаленная нода последняя В JTree есть методы работы со строками (rows). Реально какой-то сложный метод, который, ИМХО, можно было бы заменить методами из JTree. GaraZBlazkowiczline.separator разве работает в JOptionPane? По-моему нужно JTextArea использовать вместо строки а почему нет По-тому что jlabel не умеет показывать многострочный текст, без <html>. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 16:22 |
|
||
|
Покритикуйте код. Заход 2
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, BlazkowiczreadFile не закрывает стримы. Почему try-with-resource не используется? провтыкал ( BlazkowiczSiteHelper - длинный список аргументов я предпочитаю форматировать в столбик. - GetThread - ни о чем. Что за поток? Чем занимается? - GetThread - цикла в run не вижу. Зачем надо было наследоваться от Thread? Используйте Executors/SwingWorker. - Есть потоки, но обращение к GUI не выполнено из EDT. Срочно читать статьи о потоках в Swing. - parse методы - каша, вникать лень. Поток парсит страницу выдирая с нее картинки Для каждой страницы в runSitesDownload(CustomList<SiteObj> sitesList) создается свой поток GetThread Цикл в run и не нужен Blazkowiczclass Timer implements Runnable Really? То есть java.util.Timer, javax.swing.Timer и ScheduledExecutorService на столько кривые, что пришлось написать свой? Ничем мой класс не лучше. Просто мне нужно было и jLabelTime (Циферблат) менять каждую секунду и еще и задание выполнить через n секунд После беглого просмотра по существующим классам понял что для этого придется применить два таймера Ну может это и не так. Чесно говоря сильно не вникал. BlazkowiczПо-тому что jlabel не умеет показывать многострочный текст, без <html>. Ну незнаю )0 у меня все переносит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 16:37 |
|
||
|
Покритикуйте код. Заход 2
|
|||
|---|---|---|---|
|
#18+
MasterZivBlazkowicz, а оно работает ? Использовать можно по назначению? Если вас интересует работает ли приложение - то да вполне я каждый день его юзаю для своей группы Мне интересно было бы если бы ктото еще попытался его заюзать ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 16:40 |
|
||
|
Покритикуйте код. Заход 2
|
|||
|---|---|---|---|
|
#18+
GaraZПоток парсит страницу выдирая с нее картинки Для каждой страницы в runSitesDownload(CustomList<SiteObj> sitesList) создается свой поток GetThread Цикл в run и не нужен Если не нужен цикл в run, то и Thread не нужен. Нужны Executors и Callable/Runnable. Если нужна интеграция с UI, то SwingWorker. Зачем тут Thread не понятно. GaraZНу незнаю )0 у меня все переносит Значит я гоню. Переносы работают. Это word wrap не работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 16:41 |
|
||
|
Покритикуйте код. Заход 2
|
|||
|---|---|---|---|
|
#18+
BlazkowiczMasterZivBlazkowicz, а оно работает ? Использовать можно по назначению? Это к какому моему коментарию вопрос? Не спорьте по пустякам. Это я опечатался. Задачу получения HOME каталога можно решать на разных уровнях. Можно проверить версию ОС и использовать тильду или %USER_PROFILE% ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 17:34 |
|
||
|
Покритикуйте код. Заход 2
|
|||
|---|---|---|---|
|
#18+
maytonBlazkowiczMasterZivBlazkowicz, а оно работает ? Использовать можно по назначению? Это к какому моему коментарию вопрос? Не спорьте по пустякам. Это я опечатался. Кто здесь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 17:36 |
|
||
|
Покритикуйте код. Заход 2
|
|||
|---|---|---|---|
|
#18+
maytonМожно проверить версию ОС и использовать тильду или %USER_PROFILE%Зачем, если есть стандартное свойство? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 17:40 |
|
||
|
Покритикуйте код. Заход 2
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovmaytonМожно проверить версию ОС и использовать тильду или %USER_PROFILE%Зачем, если есть стандартное свойство? какое стандартное средство? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 17:43 |
|
||
|
Покритикуйте код. Заход 2
|
|||
|---|---|---|---|
|
#18+
GaraZBasil A. Sidorovпропущено... Зачем, если есть стандартное свойство? какое стандартное средство? свойство тоесть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 17:44 |
|
||
|
Покритикуйте код. Заход 2
|
|||
|---|---|---|---|
|
#18+
BlazkowiczGregorianCalendar calendar = new GregorianCalendar(); лучше Calendar calendar = Calendar.newInstance(); Не знаю. Как-то привычнее и вопросов не вызывает. Почему именно GregorianCalendar... Абстракцию, ведь, для чего-то создали. Можно поспорить насчет полезности данного совета (например, по одному из календарей сегодня новый год!!!) на самом деле он там вообще не нужен, так как используется не по назначению (для получения текущего времени): Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 17:47 |
|
||
|
Покритикуйте код. Заход 2
|
|||
|---|---|---|---|
|
#18+
GaraZGaraZкакое стандартное средство?свойство тоестьСмотрите вывод: Код: sql 1. если уж из топика непонятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 17:50 |
|
||
|
Покритикуйте код. Заход 2
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovGaraZпропущено... свойство тоестьСмотрите вывод: Код: sql 1. если уж из топика непонятно. ааа я подумал еще чето есть ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 18:01 |
|
||
|
Покритикуйте код. Заход 2
|
|||
|---|---|---|---|
|
#18+
GaraZ, SiteHelper : private static Map<URI, byte[]> pageMap; private static Map<URI, byte[]> imgMap; private static List<Exception> exList; Используются несколькими потоками GetThread ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 18:04 |
|
||
|
Покритикуйте код. Заход 2
|
|||
|---|---|---|---|
|
#18+
0FDGaraZ, SiteHelper : private static Map<URI, byte[]> pageMap; private static Map<URI, byte[]> imgMap; private static List<Exception> exList; Используются несколькими потоками GetThread ну да что не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 18:09 |
|
||
|
Покритикуйте код. Заход 2
|
|||
|---|---|---|---|
|
#18+
GaraZ, не являются thread safe ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 18:11 |
|
||
|
Покритикуйте код. Заход 2
|
|||
|---|---|---|---|
|
#18+
0FD, Лагман, нежданчик я даже и не подумал посмотреть являются ли они потоко-безопасными явный прогон с моей стороны спасибо ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 18:18 |
|
||
|
Покритикуйте код. Заход 2
|
|||
|---|---|---|---|
|
#18+
GaraZBasil A. Sidorovпропущено... Зачем, если есть стандартное свойство? какое стандартное средство? Я не возражаю. Но ему это стандартное свойство надо описать в терминах конфигурационного файла. Предложите вариант как в строку вставить ссылку на USER_HOME ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 19:06 |
|
||
|
Покритикуйте код. Заход 2
|
|||
|---|---|---|---|
|
#18+
maytonПредложите вариант как в строку вставить ссылку на USER_HOMEНичего не понял, честно говоря. Общепринятая практика использует ${user.home}, а так же любое другое свойство установленное "самим запускатором" или заданное в его командной строке. Код, который разбирает такие вставки, конечно, должен быть написан, но тот же log4j умеет это из коробки. Можно, например, написать "обобщённый" server.xml и запускать какой-нибудь tomcat как: Код: sql 1. Работает как из пушки. P.S. Хотите извратиться - можно использовать "обрамление процентами", как в виндовом шелле или REXX-овый вариант - имена вне кавычек рассматриваются как переменная, а при наличии "правильно прижатых скобок" - как вызов функции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 19:44 |
|
||
|
Покритикуйте код. Заход 2
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 19:45 |
|
||
|
Покритикуйте код. Заход 2
|
|||
|---|---|---|---|
|
#18+
Нет. Нет. У чела есть конфиг. В нём прописано. Код: xml 1. 2. 3. 4. 5. 6. 7. Или Код: xml 1. Но суть - та-же самая. Каталог пользователя и локальный путь GaraZ\VKLoader\target\Cont ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 20:03 |
|
||
|
Покритикуйте код. Заход 2
|
|||
|---|---|---|---|
|
#18+
maytonНет. Нет. У чела есть конфиг. В нём прописаноПоскипано. Должно быть: Код: xml 1. Код разбора или берётся готовый или пишется самостоятельно. P.S. Для винды разворот слешей - вопрос личных предпочтений (файловому API - до лампочки). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2014, 20:14 |
|
||
|
Покритикуйте код. Заход 2
|
|||
|---|---|---|---|
|
#18+
Постарался учесть изложенные выше замечания Обновил репозиторий :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2014, 16:58 |
|
||
|
Покритикуйте код. Заход 2
|
|||
|---|---|---|---|
|
#18+
GaraZПостарался учесть изложенные выше замечания Обновил репозиторий :) App http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html initDependence() - почему не initDependencies(), почему не просто init()??? initialization это обычно этам подготовки к чему-то. А здесь не только подготовка, но и сам запуск. Ну, это такое... ExceptionLoggerForm Уже писал выше. Очень рекомендую всегда указывать родительский контейнер для JDialog и JFrame. FileManager initContent() - явно собирает какой-то список файлов по маске. Ну, почему было не дать методу внятное и понятное имя. Иначе в таком стиле можно весь код написать Код: java 1. 2. 3. 4. for (int i = 0; i < length; i++) - заменяется на for each. Грубая ошибка: Код: java 1. 2. 3. 4. Вы теряете оригинальный stacktrace. Почему не просто throw e? filesList.remove(file); копипастом вставлен в два места. Почему было не использовать try...finally без catch вообще? synchronized стоит на методе класса FileManager, хотя по логике он относится к File. saveImages/savePages - очень сильно смущает фривольное обращение с URI, который, вероятно, должен быть всегда валидным для этой задачи. MainForm Почему было import-ы не свернуть через * ? getTreeCellRendererComponent - должен очень быстро по состоянию модели создать отображение. А тут запускается какая-то сложная логика с IO, ловятся исключения. А потом пишут мол Swing тормозной. Download implements Runnable - запускается в фоновом потоке и из него обновляет GUI. Это приведёт к рандоммным исключениям с UI уровня Swing. Используйте SwingWorker или SecondaryLoop. А это что за финт ушами? Код: java 1. 2. Как уже писал выше. Лесенка if (evt.getSource() == jButtonFileDel) и смешивание UI с бизнес-логики в одном классе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2014, 17:40 |
|
||
|
Покритикуйте код. Заход 2
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. Лучше полностью выводить состояние объекта. Удобно для отладки. Не используйте toString() для логики. SettingsForm модальный и не имеет родительского окна. Модальность сломана. this перед полями не везде пишется. Github не достаточно умный, чтобы находить поля и подсвечивать. Всё что касается сложной логики SiteManager.parse() и методы VkManager - реальная каша. Читать трудно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2014, 17:51 |
|
||
|
Покритикуйте код. Заход 2
|
|||
|---|---|---|---|
|
#18+
GaraZ, Вам нужно научиться отделять модель от представления. Весь ваш код должен уметь работать без UI вообще. UI нужен лишь для того чтобы отображать состояние вашей модели. Хорошим упражнением может быть создание альтернативного UI для вашей логики. Например web или JavaFX. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2014, 17:54 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38539515&tid=2127739]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
253ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 561ms |

| 0 / 0 |
