Yarn: СЕВЕР / S / W / E / U / D -> ZN / ZP / ...

Созданный на 11 дек. 2018  ·  11Комментарии  ·  Источник: FabricMC/yarn

Стороны света (n / s / w / e) очень мало (/ нет?) Используют за пределами F3. Код обычно пишется с учетом оси + направление или координаты xyz, а не кардинального направления («5 блоков на запад + 1 юг»).

Отображение между осью + знак и кардинальным направлением было произвольно выбрано Mojang и должно быть найдено или запомнено разработчиком для каждого конкретного использования с текущей схемой именования.

Также будет проще говорить об оси + dir в повернутых системах координат. Ось Y, повернутая на 90 ° в сторону, звучит более разумно, чем «вниз», указывающая теперь в сторону.

Чтобы решить эту проблему, поля в Облицовке следует переименовать в XP / XN / YP / YN / ZP / ZN, где первая буква - ось, а вторая - направление. Другие классы также могут иметь члены, которые все еще используют имена основных направлений, которые необходимо изменить.

Самый полезный комментарий

Большое нет от меня.

Все 11 Комментарий

Извините, но я не согласен.

  • Если у вас нет очень хороших навыков в математике, эти имена будут более запутанными и гораздо менее читаемыми в коде.
  • «Код обычно пишется с учетом оси + направления или координат xyz, а не кардинального направления (« 5 блоков на запад + 1 юг »)». - Этот код обычно просто изменяет координаты x / y / z напрямую, а не использует перечисление.
  • Все, кого я знаю, даже не мододелы, координируют свои действия с этим кардинальным направлением карт в уме, просто используя их, скажем, для обозначения их относительных расстояний.

Я считаю, что это слишком строго.

Помимо «вверх / вниз», мне никогда не приходилось явно ссылаться на какие-либо другие направления, поэтому я не считаю это проблемой. Редко можно увидеть что-то, что работает по-разному в другом горизонтальном направлении, когда это направление жестко запрограммировано. Может быть, за исключением некоторого переключателя ... во всех существующих направлениях, но в любом случае вам все равно не нужно знать, как эти направления сопоставляются с координатами, потому что там более чем достаточно полезных методов.

И это также перечисление, в котором, вероятно, не рекомендуется переименовывать записи. Имена строк в байт-коде напрямую соответствуют тем, какими должны быть имена полей, есть большая вероятность, что это запутает декомпиляторы и, возможно, даже IDE.

Да, это тоже важный фактор. valueOf () для Direction возвращает кардиналы, поэтому Mojang действительно обращается к ним так же внутри.

Обычно существует 4 контекста / использования горизонтальных облицовок:

  • повторение всего
  • противоположности (взаимодействие соседей, генерация мира)
  • координаты дельты (например, код движения объекта)
  • ось (см. использование вложенного класса оси)

Противоположности немного более ясны с обозначением оси из-за того же префикса. Дельты координат сильно отдают предпочтение обозначению осей, a.getX () - b.getX (), очевидно, относится к XN / XP, но не так сильно к западу / востоку. Оси также X / Y / Z, а не север-юг / запад-восток / вверх-вниз.

«очень хороший набор навыков в математике» -> это базовые смещения координат / направленная ось, это не сложно или нечитабельно. Напротив, "запад" нечитаем, если код вокруг него работает с координатами, и вам нужно сначала посмотреть его взаимосвязь координат.

«Этот код обычно просто изменяет координаты x / y / z напрямую» -> методы смещения / перемещения в BlockPos не согласны. Вы фактически вносите эти прямые изменения из-за того, насколько неясна связь с текущими именами.

Переименование полей перечисления не является технической проблемой, в именах mojang они называются af. Я думаю, что они достаточно плохи там, где важно не удовлетворять выборы именования Mojang.

Я просто не могу найти ни одного случая, когда север / юг / запад / восток имел бы смысл, если бы не выглядел немного менее дружелюбным.

Переименование полей перечисления не является технической проблемой, в именах mojang они называются af.

Неправильно. Имя перечисления сохраняется, несмотря на обфускацию, чтобы заставить работать вызовы valueOf, даже в конфигурации Mojang Proguard. Это имена, которые мы знаем .

Поля при поставке называются af, так же, как мы переименовываем поля. Поскольку переименование работает для Mojang, это сработает и для нас.

Большое нет от меня.

Я также не согласен, я чувствую, что это вызовет больше путаницы, чем того стоит

Во всяком случае, я бы сказал NORTH_XP, SOUTH_XN и т. Д.

Однако я действительно не вижу в этом необходимости. Я бы просто придерживался текущих

NORTH_XP

Это NORTH_ZN.

Думаю, вы только что доказали точку зрения Игрока.

Но я согласен с modmuss и kashike, хотя теперь я вижу вашу точку зрения несколько яснее и думаю, что это в некоторой степени справедливо.

Я не согласен с этим, и это вызвало бы большую путаницу

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

Runemoro picture Runemoro  ·  3Комментарии

liach picture liach  ·  4Комментарии

Draylar picture Draylar  ·  6Комментарии

enbrain picture enbrain  ·  4Комментарии

Runemoro picture Runemoro  ·  4Комментарии