actif[elements[i]] = false;
не сохраняет элемент html, преобразуя ссылку на объект в строку [object HTMLDivElement]
console.log(String(document.querySelector('div')))
console.log(String(document.querySelector('div')).style)
<div></div>
const actif = {};
const elements = document.querySelectorAll(".draggableBox");
document.addEventListener("mousemove", deplacer);
elements.forEach(init)
function init(element, index) {
actif[index] = {
active: false,
element
};
element.addEventListener("mousedown", activerDeplacement);
element.addEventListener("mouseup", e => activerDeplacement(e, false));
}
function deplacer(argument) {
Object
.values(actif)
.forEach(e => assignXY(argument, e))
}
function assignXY(argument, { active, element }) {
if (active) {
element.style.top = argument.clientY + "px";
element.style.left = argument.clientX + "px";
}
}
function activerDeplacement(arg, active = true) {
Object.assign(getFromEvent(arg), { active });
}
function getFromEvent({ target }) {
return actif[Array.from(elements).indexOf(target)];
}
.draggableBox {
position: absolute;
width: 80px;
height: 60px;
padding-top: 10px;
text-align: center;
font-size: 40px;
background-color: #222;
color: #CCC;
cursor: move;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Page drag and drop</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div class="draggableBox">1</div>
<div class="draggableBox">2</div>
<div class="draggableBox">3</div>
<script type="text/javascript" src="script.js"></script>
</body>
</html>
Это - ТОЧНО причина, которую господь привел как Вкладки - добавление, что символ посреди строки не завинчивает выравнивание.
Можно установить различный инструмент для игнорирования пробела (разность GNU:-w). Таким образом, Ваш diffs пропустит те строки и только покажет реальные изменения.Очень удобно!
Мне нравится первое и последнее, но не середина так.
У нас была подобная проблема с diffs в нескольких контрактах... Мы нашли, что вкладки работали лучше всего на всех. Установите своего редактора для поддержания вкладок, и каждый разработчик может выбрать свою собственную длину вкладки также.
Пример: Мне нравится, когда 2 вкладки пространства кодируют, очень компактно слева, но значение по умолчанию равняется 4, поэтому хотя это выглядит очень отличающимся до отступов, и т.д. пойдите на наши различные экраны, diffs идентичны, и не вызывает проблемы с управлением исходным кодом.
я порван. С одной стороны, выстраивание в линию как это может сделать повторяющийся код намного легче читать. С другой стороны, это действительно делает diffs тяжелее для чтения.
ну, начиная с создания понятного кода более важно, чем создание diffs понятный, Вы не должны быть порваны.
, по моему скромному мнению, выстраивание в линию подобных строк действительно значительно улучшает удобочитаемость. Кроме того, это позволяет более легкий cut-n-pasting с редакторами, которые разрешают вертикальный выбор.
Так как я контролирую ежедневные слияния исходного кода... Я могу только рекомендовать против него.
Это симпатично, но если Вы делаете слияния регулярно, преимущество 'легче читать' является быстро намного меньше, чем усилие, вовлеченное в слияние того кода.
, Так как тот формат не может быть автоматизирован в простом способе, первый разработчик, который не следует, он инициирует нетривиальные слияния.
не забывают, что в слиянии исходного кода, нельзя попросить, чтобы различный инструмент проигнорировал пробелы :
Иначе, "" и "" будет выглядеть одинаково во время разности, не означая слияния, необходимого... компилятор (и кодер, который добавил пространство между Строковыми двойными кавычками) не согласится с этим!
Я никогда не делаю это, и я всегда рекомендую против него. Я не забочусь о diffs том, чтобы быть более твердым читать. Я действительно забочусь, что это занимает время, чтобы сделать это во-первых, и это занимает время каждый раз, когда строки должны быть перестроены. Редактирование кода, который имеет этот стиль форматирования, является приводящим в бешенство, потому что это часто превращается в огромный приемник времени, и я заканчиваю тем, что провел больше времени, форматируя, чем внесение реальных изменений.
я также оспариваю преимущество удобочитаемости. Этот стиль форматирования создает столбцы в файле. Однако мы не делаем , читает в стиле столбца, от начала до конца. Мы читаем слева направо. Столбцы отвлекают от стандартного стиля чтения и вытягивают глаза вниз. Столбцы также становятся чрезвычайно ужасными, если они все отлично не выравниваются. Это относится к постороннему пробелу, но также и нескольким (возможно не связанный) группы столбцов, которые имеют другой интервал, но падают один за другим в файле.
Между прочим, я нахожу это действительно причудливым, что Ваш стандарт кодирования не указывает переключение вкладок или заключает в фигурные скобки размещение. Смешивание различных стилей переключения вкладок и размещений фигурной скобки повредит удобочитаемость намного больше, чем использование (или не использование) форматирование стиля столбца.
Я никогда не делаю это. Как Вы сказали, это иногда требует, чтобы изменение каждой строки скорректировало интервал. В некоторых случаях (как Ваши условные выражения выше) это было бы совершенно читаемо и намного легче поддержать, если бы Вы покончили с интервалом и поместили блоки на отдельные строки от условных выражений.
кроме того, если у Вас есть достойная подсветка синтаксиса в Вашем редакторе, этот вид интервала не должен действительно быть необходимым.
Лично я предпочитаю большую удобочитаемость кода за счет немного тяжелее к чтению diffs. Мне кажется, что в конечном счете улучшение надежности кода - тем более, что разработчики приходят и уходят - стоит компромисса.
Существует некоторое обсуждение этого в когда-либо полезном Код, Завершенный Steve McConnell. Если Вы не владеете копией этой основополагающей книги, делаете себе одолжение и покупаете то. Так или иначе обсуждение находится на страницах 426 и 427 в первом выпуске, который является выпуском, у меня есть рука.
<час>Редактирование:
McConnell предлагает выровнять знаки "равно" в группе операторов присваивания, чтобы указать, что они связаны. Он также предостерегает против выравнивания всех знаков "равно" в группе присвоений, потому что оно может визуально подразумевать отношения, где нет ни одного. Например, это было бы соответствующим:
Employee.Name = "Andrew Nelson"
Employee.Bdate = "1/1/56"
Employee.Rank = "Senator"
CurrentEmployeeRecord = 0
For CurrentEmployeeRecord From LBound(EmployeeArray) To UBound(EmployeeArray)
. . .
, В то время как это не было бы
Employee.Name = "Andrew Nelson"
Employee.Bdate = "1/1/56"
Employee.Rank = "Senator"
CurrentEmployeeRecord = 0
For CurrentEmployeeRecord From LBound(EmployeeArray) To UBound(EmployeeArray)
. . .
, я полагаю, что разница очевидна. Существует также некоторое обсуждение выравнивающихся строк продолжения.
С хорошим редактором их точка просто не верна. :)
(См. "визуальный блок" режим для энергии.)
P.S.: хорошо, все еще необходимо изменить каждую строку, но это быстро и просто.
Если Вы запланируете использовать автоматизированную проверку стандарта кода (т.е. CheckStyle, ReShaper или что-либо как этот), то те дополнительные пространства сделают довольно трудным записать и осуществить правила
Я пытаюсь следовать двум инструкциям:
вкладки Use вместо пробелов, когда это возможно, для уменьшения потребности переформатировать.
, Если Вы обеспокоены эффектом на управление версиями, сделайте Ваш функциональным изменения сначала, регистрируйте их, затем сделайте только косметический изменения.
Общедоступное телесное наказание допустимо, если ошибки представлены в "косметическом" изменении. :-)
Моя позиция - то, что это - проблема редактора: В то время как мы используем необычные инструменты для рассмотрения веб-страниц и при записи текстам, одним словом, процессора, наши редакторы кода все еще застревают в возрастах ASCII. Они являются столь немыми, как мы можем сделать их и затем, мы пытаемся преодолеть ограничения редактора путем записи необычных средств форматирования кода.
первопричина состоит в том, что Ваш компилятор не может проигнорировать операторы форматирования в коде, которые говорят "эй, это - таблица" и что IDE не могут создать визуально приятное представление исходного кода на лету (т.е. без на самом деле изменяющийся один байт кода).
Одно решение состояло бы в том, чтобы использовать вкладки, но наши редакторы не могут автоматически выровнять вкладки в последовательных строках (который сделал бы так многих вещью настолько более легкий). И добавить травму оскорблению, если Вы смешиваете с вкладкой width (в основном что-либо! = 8), можно читать Ваш исходный код, но никакой код от кого-либо еще, скажем, пример кода, который идет с библиотеками, которыми Вы пользуетесь. И наконец, наши различные инструменты не имеют никакой опции, "игнорируют пробел кроме тех случаев, когда он рассчитывает", и компиляторы не могут произвести diffs, также.
Eclipse может, по крайней мере, отформатировать присвоения табличным способом, который сделает большие наборы глобальных констант намного более читаемыми. Но это - просто отбрасывание воды в пустыне.