Comments 16
Помню была стандартная оболочка, которая выглядела примерно также. В чем разница между ней и вашей?
В слове server пропущена первая буква… Ну или еще кучка идей для именования утилит: MCanager, MCelper, MCool (последний варианты кстате «клевый», если решите использовать, поделитесь донатом плиз).
Если это запускатор — такое в принципе не нужно. На нормальных серверах нет ни винды ни Х-ов. Ну разве что для самообучения… :)
это удобно, чтобы с друзьями поиграть, так более удобно всем управлять
Ну такое, как по мне — правка server.properties, bukkit.yml и их аналогов удобней. Равно как и старт сервера через shell-ник…
А о чем, собственно, статья? Никаких поинтов, просто набор скринов…
С ходу, то что с телефона разглядел:
1) Косяки с многопоточностью. Если вы хотите останавливать поток по bool переменной, её нужно сделать atomic.
2) Куча синглтонов. Они не нужны в принципе, но если уж очень хочется, то сделайте их через базовый класс.
3) Какие-то ненужные обвёртки вокруг stl контейнеров, которые ничего не делают. Самописный QSettings.
4) GUI сильно связан с логикой.
Можно поподробнее про 3 пункт? По поводу п.4 согласен, но не знаю что с этим делать, постоянно замечаю у себя этот косяк (не только в этой программе). Может быть посоветуете что-нибудь почитать по этой теме?
Для code review есть замечательный сайт codereview.stackexchange.com. Хабр немного не для этого.
Про 3-й пункт, минимально вот так:
По поводу высокой связанности, в Qt есть сигналы/слоты. Неплохой пример, правда под QtQuick/QML можно глянуть тут.
Но я бы на вашем месте намного больше парился насчёт понимания многопоточности. Прочитайте про atomic/volatile. Про оптимизации компиляторов и т.п.
Про 3-й пункт, минимально вот так:
template < typename T >
class Singleton
{
public:
static T& instance()
{
static T inst;
return inst;
}
protected:
Singleton() {}
virtual ~Singleton() {}
private:
Singleton( const Singleton& ) = delete;
Singleton& operator=( const Singleton& ) = delete;
};
// Ну и использование:
class MyClass : public Singleton<MyClass>{ ...
По поводу высокой связанности, в Qt есть сигналы/слоты. Неплохой пример, правда под QtQuick/QML можно глянуть тут.
Но я бы на вашем месте намного больше парился насчёт понимания многопоточности. Прочитайте про atomic/volatile. Про оптимизации компиляторов и т.п.
Ну зачем же вы вредный код показываете: virtual деструктор здесь не нужен. Да и вообще, реюзабельность таких темплейтных синглтон классов — сильно под сомнением — вам всё равно нужно еще дописать MyClass
. Этот код компилируется [1]:
MyClass instances[100];
Sign up to leave a comment.
Simple MCerver — небольшая оболочка для сервера Minecraft