Минусы как бы очевидны:нет, не очевидны, по крайней мере миллионам разрабов
1 Код становится трудно читаем. По месту использования не всегда понятно что имеется ввиду под Order::load() - \Framework\Sale\Order::load или \Vendor\Project\Sale\Order::load - приходится проматывать к верху файла.Вам как разрабу должно быть в принципе фиолетово, какой из пакетов используется, если они соблюдают один интерфейс. Если не соблюдают, при том что называются одинаково, значит все пошло не так задолго до проблем с определением пакета...
2 Код становиться длиннее - там где было бы просто:Код становится длиннее в проектах где 2 контроллера и в них по 1 экшену. Там где Extension::load будет вызываться больше одного раза, очевидно экономия на эксплуатации клавиатуры заметно увеличивается. А в больших проектах создание объекта может (и будет) повторяться многократно.
\Framework\Main\UI\Extension::load([ 'vendor.module.components.cabinet.personal' ]);
приходится писать:
use \Framework\Main\UI\Extension;
Extension::load([ 'vendor.module.components.cabinet.personal' ]);
4 Код становиться замусоренным, так как верхушки файлов запросто превращаются во что-то вроде:Если не обращать внимание на отсутствие пункта 3, то... нет, не могу не обращать внимание, вот же торопыга....
И хрен его знает используются импортированные классы ниже ещё или уже нет, ведь никто не убирает этот мусор.Хрен не знает, а ИДЕ замечательно знает и даже подсвечивает серым цветом неиспользуемые.
А при чем тут версия интерпретатора?Что-то из статуса deprecated перешло в removed. Какие-то ошибки вместо warning начали выдавать error.
(await fetch('/', { method: 'HEAD' })).headers.get('ETag');
Заголовок HTTP ответа ETag является идентификатором специфической версии ресурса. Если ресурс по заданному URL изменился, будет сгенерированно новое значение Etag. Поэтому Etag чем-то похож на отпечаток ("fingerprints") и позволяет быстро определить являются ли два представления ресурса одними и теме же.
if (window.matchMedia('(max-width: 700px)').matches) {
for (const linkElement of document.querySelectorAll('.order-project__more-details-btn')) {
linkElement.setAttribute('href', 'examples-foundation-640')
}
}
i
выходит за пределы массива, тебе надо было написать либо так:function funk (arr) {
for(let i = 0, length = arr.length - 1; i < length; i++) {
if(arr[i] === arr[i+1]) {
return true;
}
}
return false;
}
function funk (arr) {
for(let i = 1; i < arr.length; i++) {
if(arr[i - 1] === arr[i]) {
return true;
}
}
return false;
}
==
) из-за его ненадёжности, только полноценное сравнение - ===
.костыль
на ровном месте, решая ту самую "проблему", что имеет место быть в твоей реализации, вместо того чтоб подумать и написать один из предложенных мной выше вариантов.)костыль
и как его применение выглядит в коде.)