Как принято оформлять код (Максимальная читабельность)

Led

291
3
0
Здравствуйте, Уважаемые Со-форумцы!

Лирика:
Поискав с помощью встроенного в форум поиска подобную тему, но не нашел, вследствие чего и предпринял решение создать свою.
Заранее прошу не кидаться в меня помидорками.
Повторюсь, в деле разработке на Java являюсь новичком, но пытаюсь сам решать многие вопросы, в которые попадаю (спасибо форуму, очень много полезно, да еще и на родном языке нашел). Но некоторые вопросы самому решить сложно, потому и обращаюсь. Прочел от корки до корки две книги по Java и одну не до конца ("Философия Java", "Разработка Java", "Революция по имени Java"), но все же далеко не всегда могу въехать сам (гуманитарий до мозга костей, дипломированный Санкт-Петербургским Государственным Университетом психолог).
Хотелось бы задать один основной вопрос, и пару побочных, возникших уже в ходе написания этой темы.
Лирику заканчиваю, перехожу непосредственно к вопросам.

Сейчас в процессе написания небольшой модификации, основное предназначение которой - научить меня тому, что можно сделать, а чего нельзя. Но маразм крепчал, блоков становилось больше, а соответственно и классов, и я начал путаться в коде. Мне это совсем не понравилось, и я начал думать над проблемой систематизации и структуризации кода. По урокам, найденным тут у меня получилось что то вроде: 
-главный класс, в котором объявляются блоки, итемы, рецепты крафтов, закладки в инвентаре творчества и n-ое количество классов, по одному для каждого блока. Резонный вопрос, можно ли это как-то разложить лучше, а точнее как это написать? Я вижу что-то вроде: главный класс с минимумом информации, отдельный класс, в котором указанны все рецепты, отдельный класс в котором назначаются итемы, отдельный пакет для классов с блоками. Уточним вопрос, как это реализовать правильно? Ссылки в главном классе на дополнительные классы, хранящие ту информацию, которая обычно в главном классе?
Вообще существует ли какая то общепринятая структуризация кода? Например название классов с блоками по типу block%Blockname% и тому подобное?
Заранее спасибо за ответы.

С Уважением, Led.

Ах, да, чуть не забыл, побочный вопрос:
а в чем сложность писать не модификации для майнкрафта, а править само ядро? что нам мешает это делать, если мы на минутку забудем про лицензионное соглашение, которое мы чтим и любим?
Еще раз: не закидывайте меня помидорками, пожалуйста.
 
586
1
2
Править ядро можно было до 1.7.10(1.6.4 была последней,если я не ошибаюсь),а с выше уже проблема(были темы на данный вопрос).Вот видео,в нём в принципе ответ на твой вопрос(смотри со 2 серии до последней):Ютуб
 
1,990
18
105
nickita45 написал(а):
Править ядро можно было до 1.7.10(1.6.4 была последней,если я не ошибаюсь),а с выше уже проблема(были темы на данный вопрос).Вот видео,в нём в принципе ответ на твой вопрос(смотри со 2 серии до последней):Ютуб
ЛожЪ. Дело вовсе не в этом же. Править ядро можно на любой версии и это ведёт за собой одинаковые проблемы. Главная - несовместимость модов.
Например, если два мода меняют один и тот же класс - они уже несовместимы, т.к. они никаким магическим образом сами не смерджатся, и изменения там будут только от одного мода, отчего второй мод либо не будет работать, либо будет крашить кубач.
 

Led

291
3
0
Я имел в виду, если я буду дописывать код прямо в жарник майнкрафта, например, добавлять новый блок подобно тому, как это делают официальные разрабы, прописывая его по аналогии с уже существующими блоками. В чем невозможность этого. То есть если я хочу обойтись без Forge впринципе, разрабатывая сам жарник майнкрафта.
 
1,990
18
105
Никто не говорил, что невозможно.
Проблема в том, что возникает конфликт с другими модами: как ты добавишь, например, блок в игру, не меняя исходные классы? В любом случае надо где-то явно регистрировать блоки и всё что ты там добавляешь, что возможно только путём изменения стандартных классов, что, в свою очередь, гарантирует стопроцентный конфликт с почти любым другим модом.
Если тебе плевать на это - пиши, никто не мешает. Правда я не пробовал собирать моды с исправленными классами в жарнике на версии выше 1.5, так что процесс может быть несколько запутанный.

А фордж впендюривается в ядро кубача, использует рефлексию для поиска главных классов модов и сам их грузит, за счёт чего разработчикам не надо ничего менять в существующих классах, ибо фордж всё нужное подхватывает сам.
 

Led

291
3
0
То есть, если я правильно тебя понял, в случае, если я не планирую использовать forge-моды впринципе, я могу спокойно не опасаясь ничего шибуршить исходный код самого кубача?
 
398
4
7
Led написал(а):
То есть, если я правильно тебя понял, в случае, если я не планирую использовать forge-моды впринципе, я могу спокойно не опасаясь ничего шибуршить исходный код самого кубача?
Да, но:
Oldestkon написал(а):
Правда я не пробовал собирать моды с исправленными классами в жарнике на версии выше 1.5, так что процесс может быть несколько запутанный.
Действительно, в любом случае придется деобфусцироать мод с помощью форджа (или самому делать аналог форджевского деобфускатора).
По моему это того не стоит.
 

Led

291
3
0
Хорошо, спасибо большое! Вопрос про написание в ядро исчерпан.

Но все таки имеет место быть основной вопрос.
Не дождавшись ответов по поводу структуризации кода, решил учиться структурировать код на примере другого мода. Под руку попался Garden Stuff.

По аналогии начал с нуля раскладывать классы по пакетам - но вот незадача - "Значение атрибута аннотации должно быть статичным выражением". Но в оригинале все работало то? Может подскажете непросвещенному, в чем проблема?

у меня (картинка)
в оригинале (картинка)

И я ловлю когнитивный диссонанс.
Заранее спасибо!
С Уважение(И извинением за тупой вопрос), Led.
 
808
3
124
Led написал(а):
в чем проблема?
Забыл модификатор final у полей MOD_ID/MOD_NAME/MOD_VERSION. Параметры аннотаций обязаны быть константными => задать их можно только напрямую или из других констант.
 

Led

291
3
0
тьфу, вручную перепечатывал, видимо - вылетело
спасибо большое, что терпите мои тупые вопросы

только что сам разобрался, хотел прийти отписаться, а вот уже ответ :)
 
Сверху