Pull to refresh

Comments 16

Помню была стандартная оболочка, которая выглядела примерно также. В чем разница между ней и вашей?
В слове server пропущена первая буква… Ну или еще кучка идей для именования утилит: MCanager, MCelper, MCool (последний варианты кстате «клевый», если решите использовать, поделитесь донатом плиз).
пропущена первая буква
Не, это специально так.
Не, это специально так.
А можно «попо дробнее»? Почему так?

P.S.: У меня есть знакомый, он называет свои программы именами островов, тоесть тут было бы что-то вроде «MCS Equador».

Если это запускатор — такое в принципе не нужно. На нормальных серверах нет ни винды ни Х-ов. Ну разве что для самообучения… :)

это удобно, чтобы с друзьями поиграть, так более удобно всем управлять
Ну такое, как по мне — правка server.properties, bukkit.yml и их аналогов удобней. Равно как и старт сервера через shell-ник…
По тебе. Кроме тебя ещё чуть больше восьми миллиардов людей на планете, чтобы от их лица говорить „это в принципе не нужно”.
Да, но многие ли из них буду заморачиваться с сервером Майнкрафта? :) Многие для игры с друзьями просто купят Realm.
Это тоже да. :)

Я лишь призываю быть добрее и корректнее.
А о чем, собственно, статья? Никаких поинтов, просто набор скринов…

С ходу, то что с телефона разглядел:
1) Косяки с многопоточностью. Если вы хотите останавливать поток по bool переменной, её нужно сделать atomic.
2) Куча синглтонов. Они не нужны в принципе, но если уж очень хочется, то сделайте их через базовый класс.
3) Какие-то ненужные обвёртки вокруг stl контейнеров, которые ничего не делают. Самописный QSettings.
4) GUI сильно связан с логикой.

Можно поподробнее про 3 пункт? По поводу п.4 согласен, но не знаю что с этим делать, постоянно замечаю у себя этот косяк (не только в этой программе). Может быть посоветуете что-нибудь почитать по этой теме?
Для code review есть замечательный сайт codereview.stackexchange.com. Хабр немного не для этого.
Про 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];

[1] https://wandbox.org/permlink/ede7bBfl0KSq6QV2

Спасибо за замечание. Если честно, скопипастил с какой-то своей старой лабы. Сам уже очень давно не использовал синглтоны на практике. Думаю суть посыла автор понял.

Sign up to leave a comment.

Articles