[1.7.10] MJUtils

1,200
37
237
Баг пофиксил (убил два дня на то, чтобы перенести одну строчку в другое место...), немного дополнил комментарии (хотя они тупыми и остались), учёл советы по JSONReader'y, пофиксил косяк с конфигами.

Версия 1.7.10-2 готова, на гитхабе присутствует, на курс пойду заливать (как и ThaumOres 1.4.0, который я просто связал с этим ядром)
 

CumingSoon

Местный стендапер
1,634
12
269
Можешь этот кусок дерьма туда пихнуть: http://forum.mcmodding.ru/%D0%A2%D0%B5%D0%BC%D0%B0-Kotlin-1-7-10-Raven-API
 

CumingSoon

Местный стендапер
1,634
12
269
Код симилярный на 99% за исключением других ключевых слов и отсутствия точки с запятой. В прочем, можешь воровать@убивать, а можешь не делать этого.
 
1,200
37
237
Кстати да, авторство было второй причиной отказа.

Но если автор даст добро и установка этого всего в моё ядро будет равносильна копипасту, то без проблем поставлю :D
 

CumingSoon

Местный стендапер
1,634
12
269
Автор? Я - создатель этих интернетов. Да и лицензия - WTFPL (Do what the fuck you want to), что намекает как бы, да?
 

CumingSoon

Местный стендапер
1,634
12
269
Не советую копипастить. Лучше это "позаимствовать", так как не везде удачно написано.
 
1,200
37
237
CoomingSoon написал(а):
Не советую копипастить. Лучше это "позаимствовать", так как не везде удачно написано.

А вот тут другая проблема: я не разбираюсь в этих всех графенах и удачных написаниях онного.
 

CumingSoon

Местный стендапер
1,634
12
269
Там и пакеты были, и схематики и какие-то утилиты для работы с сущностями. Луркай
 
2,505
81
397
Так и не поправил хрень с дефолтным объектом.

Зачем тебе сеттер Gson? Если вдруг потребуется другой Gson, то лучше сделай конструктор, в который ты передашь его. Если не передашь, то создастся дефолтный. А так, у тебя будут 2 Gson'a, а ведь объект не из дешевых. А если тебе потребуется н-ное количество этих оберток? Я понимаю, что можно обойтись одной, н раз переустанавливая файл и считывать этот объект, но иногда это не совсем удобно.


В init косяк. Если нет файла, ты делаешь 2 раза write.


Твой дефолтный объект это вообще лол. Например, файла нет. Тогда json = default. Потом ты изменяешь где-нибудь json и default, естественно тоже меняется, т.к. объект один и тот же. Еще еще одна причина не использовать default объект.
 
1,200
37
237
Я этот сеттер добавил, чтобы был (лол). Для меня отличия в Gson'е только 'красивый вид' или нет. Так что незачем сетать его. Но про конструктор, окей, добавлю.

Так и не догнал, чем тебе дефолтный объект не зашел. Если ты хотел, чтобы дефолтные поля у объекта были созданы изначально (просто в классе прописаны) и потом создать его хоть через newInstance(), то как быть в случае, когда дефолты нужно подкорректировать? Не переназначать же через костылями переменные.
 
2,505
81
397
И замени табуляцию на 4 пробела уже. Весь код плывет.
 
1,200
37
237
Dahaka написал(а):
И замени табуляцию на 4 пробела уже. Весь код плывет.

Я так привык, мне норм :D

/Не могу разбираться в коде, когда он близок к сплошному столбу из строк/
 
2,505
81
397
Не очень понял, что ты там написал. У меня примерно так:
Код:
private final Supplier<T> factory;

public T build(boolean needRewrite)
{
    try {
        obj = ... Читаю объект ...;

        if (obj == null) {
            obj = factory != null ? factory.get() : klass != null ? klass.newInstance() : null;
            if (obj == null) {
                return obj;
            }
            needRewrite = true;
        }
        // Тут объект починится, если в файле указали что-то не то.
        if (obj instanceof IValidator && !((IValidator) obj).isValid()) {
            needRewrite = true;
        }
        if (needRewrite) {
            rewrite();
        }
        return obj;
    }
    catch (...) {
        ...
    }
}


MJaroslav написал(а):
Я так привык, мне норм
Ты даже в IDE настроил табуляцию на 8 пробелов что ли?
 
1,200
37
237
Меня этот код пугает больше моего. Ты это предлагаешь поставить в setDefault? (Который я убрал и сделал поле публичным)
 
2,505
81
397
Нет, это аналог твоего write. У меня нет никаких setDefault. У меня есть factory, который создаст объект, если создать из файла не получилось. Целевой объект может быть сложным. Не стоит создавать такие без необходимости.
 
Сверху