Рассудить спор двух гигантов мысли (==) VS (===) Function Expression VS Function Declaration


Товарищи, рассудите пожалуйста. Один мой товарищ увидел в моём php коде (==) вместо (===) и теперь постоянно ворчит на меня за то, что == это смертный грех и его должны вообще вычеркнуть как устарелый во всех документациях и точка, а я не имею права зваться разработчиком и заслуживать уважение потому что использовал в коде ==. В моём случае, по моему мнению, удобнее использовать == ибо функции, результаты которых я сравниваю, ничего левого, что может сломать логику, вернуть не могут. Но в то же время я не могу быть уверен отдаст ли мне функция число в формате строки или int, и чтобы избежать лишних движений по преобразованию я просто использую ==. (Но моему собеседнику на эту аргументацию как-то наплевать)

Господа Сеньоры, рассудите пожалуйста. Это я специалист не компетентный или мой товарищ агрессивный зумер( это не мат, загуглите, если это слово вас смутило )? Считается ли нормой использование (==), когда архитектура позволяет или же это абсолютно грешно? И Цитата -

Я вообще считаю что == на developer.mozilla должны обозначить красным, как устаревший синтаксис.

Я готов тебя задушить за ==

Ещё один вопрос по поводу JS — тот же персонаж агрессивно наехал на меня из-за того что я в своём коде вместо современного

// Function Expression
const foo = () => {...}

использовал

// Function Declaration
function foo() {...}

Я понимаю, что аля современно и даёт некие преимущества, но привычнее просто было писать function() и я не задумывался над этим, а код каким-то неведомым образом на таком «старье» даже работал. Имел ли право мой собеседник заявлять что я допускаю крайне грубую ошибку и посчитать меня не компетентным? Мне кажется что в этом споре от части оба не правы но мой оппонент, которого в своё время я протолкнул в IT, не прав больше ибо агрессивно наехал на меня из-за как по мне нормальных вещей.

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
==

коли язву порівнюєш з досвідом

1. Только ===. Линтер должен быть настроен банить ==. То же самое — никаких var!!!
2. const foo = () => { ... } - зависит от контекста. На верхнем уровне писать нормальные функции (function foo(....) { ....}). Если функцию определять в теле другой функции (например, колбек) — то тогда использовать arrow function.

Здравствуйте. Меня зовут Вячеслав, мне 22 года и я пхп программист. Я сижу на пхп с 18 лет.

Первый раз я попробовал пхп с другом. Мы сидели, обсуждали веб-технологии и тут он сказал, что недавно пробовал пхп. Он предложил попробовать мне. Поначалу я не согласился, ведь это пхп, я слышал много плохих слухов про него, слышал, что он вызывает зависимость. Но друг настаивал, говорил, что в жизни нужно попробовать все и я сдался. Он предложил бесплатный скрипт, выводящий «Hello world!». Он казался совсем безобидным, но как потом оказалось, я уже не мог остановиться. Уже очень скоро благодаря пхп я попробовал свою первую cms. Это сейчас я понимаю, насколько опасным был этот шаг, но тогда я ничего не понимал, и мне это нравилось. Я не заметил, как после первой испробованной cms, мне уже захотелось написать свою. Дальше было только хуже. Я уже рискнул попробовать кое что потяжелее. Я решил попробовать свой первый фреймворк. Это было прекрасно. Но это была дорога в никуда. На тот момент родственники уже отчаялись мне помочь, а моя девушка узнав, что я использую пхп бросила меня. Я все больше отдалялся от своих друзей и родных, мое окружение составляли такие же пхп-программисты как и я. Мы собирались у одного в квартире, подключались к серверу и совместно программировали, используя пхп и фреймворки. Я попал в этот капкан пхп и теперь не могу самостоятельно избавиться от этого, моя жизнь сломана. Если бы мог вернуться в то время, я бы все исправил, и никогда не купился на эту уловку.

Класіка) зара олдам скули зведе)

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

Один мой товарищ увидел в моём php коде (==) вместо (===)

Так код нужно писать на Go, а не на каком-то php или js, и тогда не будет никаких проблем. Это уже всем давно известно.

На ассемблере нужно писать, высокоуровневые языки придумали для тупых.

Девки спорили на даче, чья ****а лохмаче

github.com/...​2e53bc889458ed2cb5c3e9374

/s/==/===

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

Подозреваю, что может быть нужно наоборот s/!==/!=/g

не было бы такой уязвимости, если бы ее написали на Rust

Совершенно очевидно, что правильный код нужно писать на Go, тут даже дискутировать не о чем.

А якщо хочеш писати код, але при цьому не міняти свічі на клавішах ctrl,C,V кожні два дні?

Ви можете закупити собі клавіатур на рік або ж переназначити клавіші.

Но в то же время я не могу быть уверен отдаст ли мне функция число в формате строки или int

От це й погано. Оптимально буде пофіксити це та надалі використовувати строге порівняння. Можна лише вірити на слово, що нестроге порівняння нічого не зламає. Гляньте хоча б, через яку вразливість в OctoberCMS вчора хакнули низку урядових сайтів :-)

Щодо визначення функцій, я ж так розумію, тут суперечка не expression чи declaration, а arrow function чи «дідівський» синтаксис. Тут залежить від оточуючого коду (а саме, від того, що відбувається з контекстом зазначеної функції). В різних ситуаціях зручніший той чи інший варіант, але це точно не привід аж так токсично реджектити ваш підхід — крім ситуації, якщо arrow functions це частина код’нвенції щодо код стайлу на проекті. Але тоді чому б не налаштувати відповідним чином лінтер і зберегти одне одному нерви :-)

Считается ли нормой использование (==)

Зависит от того, как используется в других частях проекта. Если есть соглашения — нужно им следовать.

Я готов тебя задушить за ==

Это признаки токсичного поведения. Спокойно, без перехода на личности, попроси объяснить, почему это смертельный грех, особенно если в существующем коде есть примеры противоположного использования.

// Function Declaration

краще бо анонімна функція в стек трейсі буде анонімною, а названна функція буде фрейм мати з назвою

бо анонімна функція в стек трейсі буде анонімною

Хм, так если речь о

const foo = () => {...}

то по факту там она не будет анонимной, а будет иметь имя «foo», так что ее стектрейс будет именованным и не будет отличаться от

Function Declaration
const foo = () => {const bar= ()=> {throw Error("test")}; bar()}
foo.name // "foo"

foo();
// Uncaught Error: test
//    at bar (<anonymous>:1:43)
//    at foo (<anonymous>:1:59)
//    at <anonymous>:1:1

круто якщо нода і браузери вже навчились це. Колись цього не було

чекнув, занесли в ECMAScript2015

Колись цього не було

Не было, но все же ES6 уже лет 7 и 22 летние сеньоры уже не вспомнят :)

Но в то же время я не могу быть уверен отдаст ли мне функция число в формате строки или int,

Проблема: ви використовуєте щось і не знаєте (не впевені) як воно працює. Оте === якби змушує вас робити те що ви б і так мали робити при написанні коду — думати (про едж кейси, наприклад)

Имел ли право мой собеседник заявлять что я допускаю крайне грубую ошибку и посчитать меня не компетентным?

Якщо він може це аргументувати, то так :)
«Зараз всі так роблять» — це не аргумент. Запитайте у нього «які проблеми вирішує його рішення або створює ваше»

но мой оппонент, которого в своё время я протолкнул в IT, не прав больше ибо агрессивно наехал на меня из-за как по мне нормальных вещей.

alexanderborysenko, ой Джон Доу, ви в заголовку просите щоб оцінили технічну суперечку, але
— в тексті суперечки немає (ваші аргументи не видно)
— в кінці ви просто підштовхуєте читача до того щоб вас пожаліли
не треба так робити.

Згоден, я вчинив низько тим що наплакався на форумі, як дитина, і був не правий в конфлікті

Можете почати писати плагіни на Go для WordPress, проєкти були.

Я думаю відповідь очевидна

а там на Go еще кто то пишет? :D
www.meme-arsenal.com/...​519b33cbd877bb0f7f6fb.jpg

Варто зробити схожий мем, але про роботу напряму

Підписатись на коментарі