Интересует мнение по поводу кода, *не знал куда поместить |
Здравствуйте, гость ( Вход | Регистрация )
Интересует мнение по поводу кода, *не знал куда поместить |
RazrFalcon |
19.3.2011, 1:17
Сообщение
#1
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
Просто интересно, ради повышения опыта.
Хотелось бы услышать все возможные замечания. Может что то делаю совсем не так, как заведено и тд. Программка довольно простая, банальная смена обоев для Gnome. Просто захотелось довести хоть одну прогу до ума. Собственно код: .pro
main.cpp
wallwindow.cpp
wallwindow.h
Прикрепленные файлы
|
|
|
Алексей1153 |
19.3.2011, 10:56
Сообщение
#2
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
Цитата #include <QDialog> #include <QSystemTrayIcon> #include <QDir> #include <QSettings> #include <QtGui> #include <QApplication> #include <QFileDialog> #include <QtDebug> #include <QFile> #include <QProcess> #include <QSystemTrayIcon> #include <QMenu> #include <QAction> #include <QTimer> большую часть этих заголовков можно перенести в wallwindow.cpp код не смотрел, немного некогда, но вот сразу 1)
зачем переменные глобальные ? И number не инициализирован 2) нет комментариев. Жирнющий минус Сообщение отредактировал Алексей1153 - 19.3.2011, 10:57 |
|
|
Litkevich Yuriy |
19.3.2011, 11:33
Сообщение
#3
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
WallWindow - наследник QDialog, почему в конструкторе класса не инициализируешь базовый класс? Ты точно понимаешь что происходит?
|
|
|
RazrFalcon |
19.3.2011, 14:24
Сообщение
#4
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
большую часть этих заголовков можно перенести в wallwindow.cpp Зачем? Точнее почему, так тоже ведь работает.код не смотрел, немного некогда, но вот сразу Глобальные, так как используются не только в одной функции.1)
зачем переменные глобальные? И number не инициализирован Надо будет глянуть. >> И number не инициализирован Нужно что то в духе number=0;? 2) нет комментариев. Жирнющий минус Ну это да, надо на исправить.>>Ты точно понимаешь что происходит? По моему нет А в чем проблема? Вроде работает. Сообщение отредактировал RazrFalcon - 19.3.2011, 14:27 |
|
|
Алексей1153 |
19.3.2011, 16:30
Сообщение
#5
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
Зачем? Точнее почему, так тоже ведь работает. работает. Но, гляжу по содержимому, их присутствие в том файле необязательно, достаточно форвардов. А это значит, что заголовки можно смело перенести в реализацию. Чем меньше левых заголовочников в H файле, тем быстрее компиляция большого проекта, да и глобальная область видимости меньше "замусоривается" левыми определениями (а это частенько помогает избежать запутанных зависимостей между вложенными заголовочниками - когда это действительно бывает необходимо) Глобальные, так как используются не только в одной функции. У тебя же класс Сделай членом класса Нужно что то в духе number=0;? лучше так (не надо лепить в одну строчку) int switch_time=60; int row_num=0; int number=0; |
|
|
RazrFalcon |
19.3.2011, 16:38
Сообщение
#6
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
>>Но, гляжу по содержимому, их присутствие в том файле необязательно, достаточно форвардов.
ээ... это какие именно? Что нужно оставить в хедере, а что перенести в срр? >>Сделай членом класса. Просто перенести в "class WallWindow : public QDialog"? Сообщение отредактировал RazrFalcon - 19.3.2011, 16:41 |
|
|
Алексей1153 |
19.3.2011, 16:52
Сообщение
#7
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
RazrFalcon, все, кроме
#include <QDialog> перенеси, а потом компилятор подскажет (но если от класса используется только ссылка или указатель - достаточно только форвард добавить) Просто перенести в "class WallWindow : public QDialog"? ага, туда ) Только инициализацию в конструкторе делать |
|
|
RazrFalcon |
19.3.2011, 17:00
Сообщение
#8
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
Сделал.
В хедере остались только: И все.
|
|
|
Алексей1153 |
19.3.2011, 18:36
Сообщение
#9
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
#include <QSettings>
#include <QFileDialog> - тоже в заголовке не требуются вроде немного глянул код. Без комментариев мало что сказать можно, разве что не всегда удобное форматирование. Но вот один момент явно не нравится:
переменная имеет тип QSystemTrayIcon::ActivationReason , а сравниваешь с цифрами-константами, хотя там НАВЕРНЯКА есть именованные константы |
|
|
RazrFalcon |
19.3.2011, 18:57
Сообщение
#10
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
И в правду есть
>>тоже в заголовке не требуются вроде Нужно для: QSettings *settings; и QFileInfoList, QFileInfo Сообщение отредактировал RazrFalcon - 19.3.2011, 18:59 |
|
|
Текстовая версия | Сейчас: 27.12.2024, 2:08 |