Почему arraycopy () не подчиняется конвенции lowerCamelCase? [Дубликат]

OpenGL использует обратное текстурирование. Он берет координаты из мирового пространства (X, Y, Z) в пространство текстур (X, Y) в дискретное пространство (U, V), где дискретное пространство находится в области [0,1].

Возьмите многоугольник, подумайте об этом как лист бумаги. При этом:

  glTexCoord (0,0);  glTexCoord (0,1);  glTexCoord (1,1);  glTexCoord (1,0);   

Вы указываете OpenGL на весь лист бумаги. Когда вы применяете модификации, ваше текстурирующее пространство изменяется в соответствии с координатами ввода. Вот почему, например, когда вы делитесь, вы получаете одну и ту же текстуру дважды, вы указываете OpenGL отображать половину листа, а не весь лист бумаги.

2
задан Semisonic 10 March 2015 в 10:04
поделиться

2 ответа

«Я предполагаю, что есть некоторая логика решения о размещении этих методов в том месте, где они есть».

Хотя это часто верно, я обнаружил, что когда что-то не работает , это предположение обычно происходит там, где вы вводите в заблуждение.

Язык находится в постоянном развитии, с того дня, когда кто-то предлагает новый язык в тот момент, когда он устарел. Между этими крайностями есть несколько этапов, которые проходят язык. Особенно, если кто-то тратит на нее деньги и хочет, чтобы люди использовали его, часто возникает очень странная фаза перед или после первого выпуска:

« нам нужно, чтобы это работало вчера ".

Здесь происходит нечто подобное, у вас есть почти полный язык, но программистам нужно что-то сделать, чтобы показать, что может сделать язык, или для конкретного приложения требуется функция который не был разработан на языке.

Итак, где мы добавляем эту функцию? - ну, где это имеет смысл для этого конкретного программиста, которому поручено «заставить его работать вчера».

Логика может заключаться в том, что именно здесь функция имеет наибольший смысл, так как она не делает «не принадлежит нигде, и он не заслуживает собственного класса. Это также может быть что-то вроде: до сих пор мы никогда не делали копию массива, не используя систему .. позволяет помещать туда arraycopy и сохранять всех добавочных включений.

  • в следующем генерация языка, люди не будут перемещать эту функцию, поскольку некоторые опытные программисты будут жаловаться. Таким образом, эта функция может быть дублирована и найдена в месте, где это имеет смысл.

гораздо позже, он будет отмечен как устаревший и удален, если кто-то хочет его очистить. .

0
ответ дан Henrik 16 August 2018 в 01:12
поделиться

Пример Integer - это, вероятно, просто дизайнерское решение. Если вы хотите неявно интерпретировать свойство как Integer, используйте java.lang.Integer. В противном случае вам нужно будет предоставить метод getter для каждого java.lang-Type. Что-то вроде:

  • System.getPropertyAsBoolean (String)
  • System.getPropertyAsByte (String)
  • System.getPropertyAsInteger (String) ...

И для каждого типа данных вам понадобится один дополнительный метод по умолчанию: - System.getPropertyAsBoolean (String, boolean) - System.getPropertyAsByte (String, byte) ...

Так как java.lang-Types уже обладают некоторыми способностями броска (Integer.valueOf (String)), я не слишком удивлен, обнаружив здесь метод getProperty. Удобство в торговле для преодоления принципов немного.

Для System.arraycopy, я думаю, это операция, которая зависит от операционной системы. Скорее всего, вы очень быстро копируете память из одного места в другое. Если бы я хотел скопировать такой массив, я бы поискал его в java.lang.System

1
ответ дан Stephen C 16 August 2018 в 01:12
поделиться
  • 1
    Еще в середине 90-х годов качество программирования не было ниже. На самом деле мы можем утверждать, что это было лучше, поскольку вам приходилось составлять все самостоятельно. Мои дни сборки требовали большего качества, чем современные java. – BigMike 10 March 2015 в 09:42
  • 2
    Arrays.copyOf и System.arraycopy делают разные вещи. Первый - для создания новых массивов, второй для копирования между существующими. – SpaceTrucker 10 March 2015 в 09:44
  • 3
    не забывайте, что утилита Arrays была добавлена ​​с 1.2, тогда как System была уловкой всей утилиты с 1.0 – BigMike 10 March 2015 в 09:47
  • 4
    Да, я понимаю консервативный характер Java. Однако я не понимаю, почему нужно быть настолько расстроенным в отношении того, чтобы отбросить уродливые остатки прошлого языка как устаревшие. Действительно, такая функциональность может оставаться в живых, но использование ее как устаревшей будет явным признаком того, что ее нельзя использовать в современном коде. Например, Herbert Schildt's «Java: The Complete Reference», которая является своего рода официальным руководством по Java от Oracle, намеренно избегает охвата устаревших вещей как того, что в наши дни не должно использоваться. – Semisonic 10 March 2015 в 09:48
  • 5
    @BigMike Я обновил ответ, чтобы отразить это. То, что я пытаюсь сделать, заключается в том, что не существует такого надлежащего набора передовых методов для разработки OO. Также, как я указал, класс Arrays был добавлен позже. – Thirler 10 March 2015 в 09:51
  • 6
    System.arrayCopy также может быть реализована для использования базового оборудования. – SpaceTrucker 10 March 2015 в 09:53
  • 7
    @SpaceTrucker, это было бы еще одной жертвой юзабилити в пользу базовой логики. Ничто не запрещает размещать процедуру копирования массива рядом с другими процедурами массива, но заставить его вызвать некоторый код с программным обеспечением, верно? – Semisonic 10 March 2015 в 10:14
Другие вопросы по тегам:

Похожие вопросы: