OnlyAW

Пользователь

Регистрация: 08.06.2012

Сообщения: 5201

Рейтинг: 4004

OnlyAW

Регистрация: 08.06.2012

Сообщения: 5201

Рейтинг: 4004

evilpapech сказал(а):

но в этом случае просто прикрути проверку на бул

Нажмите, чтобы раскрыть...

в целом справедливо

тут зависит от постановки задачи.

приведение типов в нетипизированных языках - вещь коварная

в целом использовать тройное сравнение в нетипизированных это best practice

Иначе потом можно днями отлавливать баги PepeOK.png?1592047625

Вот вам смехушечка - https://jsisweird.com/

И вот еще олдовый видосик. WAT? WAT CatYeah.png?1619501053

в ютубе обрезанная изза прав, вот из вк

RedScoop

Пользователь

Регистрация: 24.05.2022

Сообщения: 95

Рейтинг: 42

Нарушения: 10

RedScoop

Регистрация: 24.05.2022

Сообщения: 95

Рейтинг: 42

Нарушения: 10

img

Идеальное решение https://ibb.co/mvDrsXf

Я тот чел, что словил 24 минуса

Lancer.Rev.X

Пользователь

Регистрация: 07.12.2014

Сообщения: 4181

Рейтинг: 2228

Lancer.Rev.X

Регистрация: 07.12.2014

Сообщения: 4181

Рейтинг: 2228

img
evilpapech сказал(а):

1) брэйсы содержащие только один стейтмент, отмазка в виде зато код расширяемый не катит, задача изначально такая что функция может вернуть либо да либо нет и ни в какой параллельной вселеной она не может возвращать что-то еще

2) проверка и сравнивание значения булевой переменной (=== true опустить надо)

3) неиспользование тернарника в наиочевиднейшем случае

Нажмите, чтобы раскрыть...

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

Meepka

Пользователь

Регистрация: 08.10.2012

Сообщения: 1928

Рейтинг: 465

Meepka

Регистрация: 08.10.2012

Сообщения: 1928

Рейтинг: 465

Мне даже интересно стало как бы тс сдела такой кейс

 

y6ejushe

Пользователь

Регистрация: 24.10.2021

Сообщения: 12895

Рейтинг: 2183

Нарушения: 15

y6ejushe

Регистрация: 24.10.2021

Сообщения: 12895

Рейтинг: 2183

Нарушения: 15

Meepka сказал(а):

Мне даже интересно стало как бы тс сдела такой кейс

 

Нажмите, чтобы раскрыть...

наверное как то так? в одну строчку%: bool === true ? 'yes' : 'no'

haHAA

Пользователь

Регистрация: 25.03.2017

Сообщения: 1107

Рейтинг: 742

haHAA

Регистрация: 25.03.2017

Сообщения: 1107

Рейтинг: 742

img
y6ejushe сказал(а):

наверное как то так? в одну строчку%: bool === true ? 'yes' : 'no'

Нажмите, чтобы раскрыть...

bool === true это уже кринж

bool ? 'yes' : 'no'

y6ejushe

Пользователь

Регистрация: 24.10.2021

Сообщения: 12895

Рейтинг: 2183

Нарушения: 15

y6ejushe

Регистрация: 24.10.2021

Сообщения: 12895

Рейтинг: 2183

Нарушения: 15

haHAA сказал(а):

bool === true это уже кринж

bool ? 'yes' : 'no'

Нажмите, чтобы раскрыть...

Тут это не нужно, но есть некоторые которые любят все так писать. Т.к. бывают проблемы с null и 0.

Кринж не кринж, но никто не запрещает так писать. И читаемость кода это не портит.

Не знаю насколько это изменит потребление памяти.

 

Некоторые вообще пишут !== false, вот тут уже немного рофлить начинаешь с кода и злиться)) Хотя опять же, бывают случаи когда это необходимы. И из за такой малейшей ошибки, могут быть большие последствия. И люди не парятся, а просто делают максимальную проверку всегда и везде.

Может это и неправильно, но количество ошибок это снизит. 

Salovar

Пользователь

Регистрация: 12.07.2017

Сообщения: 4783

Рейтинг: 1007

Salovar

Регистрация: 12.07.2017

Сообщения: 4783

Рейтинг: 1007

Semenofsky сказал(а):

RLLH3an.png

24 минуса получил чел, но месседж же по факту

Типо сверху реально шок контент

Нажмите, чтобы раскрыть...

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

Pudgewerksaw

Пользователь

Регистрация: 06.01.2021

Сообщения: 2375

Рейтинг: 1032

Нарушения: 90

Pudgewerksaw

Регистрация: 06.01.2021

Сообщения: 2375

Рейтинг: 1032

Нарушения: 90

Адекватный код. Главная проблема в названии функции. И в чем бухтешь вообще, мало ли что там новички понаписывают. 

 

Meepka

Пользователь

Регистрация: 08.10.2012

Сообщения: 1928

Рейтинг: 465

Meepka

Регистрация: 08.10.2012

Сообщения: 1928

Рейтинг: 465

Salovar сказал(а):

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

Нажмите, чтобы раскрыть...

И что же ты там видел?

 

Pudgewerksaw сказал(а):

Адекватный код. Главная проблема в названии функции. И в чем бухтешь вообще, мало ли что там новички понаписывают. 

 

Нажмите, чтобы раскрыть...

Я тебе больше скажу это отличный код. Он читается на раз два и все понятно. Единственое что можно поправить это else убрать и сделать просто return "No"

YoshkinKot

Пользователь

Регистрация: 20.06.2016

Сообщения: 13450

Рейтинг: 5328

YoshkinKot

Регистрация: 20.06.2016

Сообщения: 13450

Рейтинг: 5328

Neels99 сказал(а):

Название метода boolToWord, то дословно boolean в слово.

Тут не нужно видеть условие, достаточно кода, чтобы понять, почему и для чего так сделано.

Я понимаю, 3 дня интенсива js сделали из тебя мидл-сеньор js девелопера, но тут мало того, что понятно, человек учится и это учебно-тренировочный код, так ещё и не по делу докопался.

А сверху предлагаешь в реализацию метода, добавить вывод, что не boolean был передан. Давай ещё try-catch присунем, в примитивный метод.

Нажмите, чтобы раскрыть...

интерпретатор пролога

задача таки логическая

Salovar

Пользователь

Регистрация: 12.07.2017

Сообщения: 4783

Рейтинг: 1007

Salovar

Регистрация: 12.07.2017

Сообщения: 4783

Рейтинг: 1007

Meepka сказал(а):

И что же ты там видел?

 

Я тебе больше скажу это отличный код. Он читается на раз два и все понятно. Единственое что можно поправить это else убрать и сделать просто return "No"

Нажмите, чтобы раскрыть...

Когда в одних и тех же либах enable то 0, то 1, проверки типо if(true == условие), дефайн дефайна дефайна дефайна, в которых происходит перезапись бит справа налево и наоборот, а в результат 0 действий, структуры, в которых параметры дублируются, кучи ошибок. Это прям надо скидывать. Там п****ц похлеще того, что ты выложил. Либы от gd32 чекни

Meepka

Пользователь

Регистрация: 08.10.2012

Сообщения: 1928

Рейтинг: 465

Meepka

Регистрация: 08.10.2012

Сообщения: 1928

Рейтинг: 465

Salovar сказал(а):

Когда в одних и тех же либах enable то 0, то 1, проверки типо if(true == условие), дефайн дефайна дефайна дефайна, в которых происходит перезапись бит справа налево и наоборот, а в результат 0 действий, структуры, в которых параметры дублируются, кучи ошибок. Это прям надо скидывать. Там п****ц похлеще того, что ты выложил. Либы от gd32 чекни

Нажмите, чтобы раскрыть...

Ну так скидывай мы посмотрим

Salovar

Пользователь

Регистрация: 12.07.2017

Сообщения: 4783

Рейтинг: 1007

Salovar

Регистрация: 12.07.2017

Сообщения: 4783

Рейтинг: 1007

Meepka сказал(а):

Ну так скидывай мы посмотрим

Нажмите, чтобы раскрыть...

Куда ты смотреть собрался, если читать не умеешь? Либы для мк от gd32. Открываешь любую. Начинаешь смотреть.

YoshkinKot

Пользователь

Регистрация: 20.06.2016

Сообщения: 13450

Рейтинг: 5328

YoshkinKot

Регистрация: 20.06.2016

Сообщения: 13450

Рейтинг: 5328

Meepka сказал(а):

Я тебе больше скажу это отличный код. Он читается на раз два и все понятно. Единственое что можно поправить это else убрать и сделать просто return "No"

Нажмите, чтобы раскрыть...

Ну не, а что если ты туда бросишь не true, а число)

 

По-моему тут явное нарушение least surprise principle.

 

Потому что в будущем человек может забыть закастить в bool (а это частая история). И получить “No” на чем-то, что должно каститься в true и давать “Yes”.

 

“Правильный” вариант всё таки тернарка 

 

function boolToWord(bool) {

    return bool? “Yes” : “No”;

}

 

либо бросить исключение:

let type = (typeof x);

if (type === ”boolean”) {

    throw new TypeError(

        “boolean expected, but got ” + type;

    );

}

// та-та-та

Zacateca

Пользователь

Регистрация: 22.12.2017

Сообщения: 34342

Рейтинг: 13379

Нарушения: 35

Zacateca

Регистрация: 22.12.2017

Сообщения: 34342

Рейтинг: 13379

Нарушения: 35

Semenofsky сказал(а):

RLLH3an.png

24 минуса получил чел, но месседж же по факту

Типо сверху реально шок контент

Нажмите, чтобы раскрыть...

Это задание для ката 8 (самый-самый начальный уровень). Так что если оно проходит все тесты, то уже имеет место быть.

А то что ЧСВ чухана опустили - правильно сделали.

Meepka

Пользователь

Регистрация: 08.10.2012

Сообщения: 1928

Рейтинг: 465

Meepka

Регистрация: 08.10.2012

Сообщения: 1928

Рейтинг: 465

Salovar сказал(а):

Куда ты смотреть собрался, если читать не умеешь? Либы для мк от gd32. Открываешь любую. Начинаешь смотреть.

Нажмите, чтобы раскрыть...

Тоесть ты вкинул какойто бред, но пруффы предлогаешь искать мне самому?) Звучит гениально. Просто ору с того как челы на ходу сочиняют какие они тру программисты, а как дело до пруфов доходит то ищите сами 

YoshkinKot сказал(а):

Ну не, а что если ты туда бросишь не true, а число)

 

По-моему тут явное нарушение least surprise principle.

 

Потому что в будущем человек может забыть закастить в bool (а это частая история). И получить “No” на чем-то, что должно каститься в true и давать “Yes”.

 

“Правильный” вариант всё таки тернарка 

 

function boolToWord(bool) {

    return bool? “Yes” : “No”;

}

 

либо бросить исключение:

let type = (typeof x);

if (type === ”boolean”) {

    throw new TypeError(

        “boolean expected, but got ” + type;

    );

}

// та-та-та

Нажмите, чтобы раскрыть...

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

Salovar

Пользователь

Регистрация: 12.07.2017

Сообщения: 4783

Рейтинг: 1007

Salovar

Регистрация: 12.07.2017

Сообщения: 4783

Рейтинг: 1007

Meepka сказал(а):

Тоесть ты вкинул какойто бред, но пруффы предлогаешь искать мне самому?) Звучит гениально. Просто ору с того как челы на ходу сочиняют какие они тру программисты, а как дело до пруфов доходит то ищите сами 

 

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

Нажмите, чтобы раскрыть...

Я расписал конкретные моменты, а ты по слову enable в либах gd32 не способен это проверить и просишь пруфы. Ты как бы опозорился и обосрался, если что. Разжевывать тебе никто не будет ничего. Не способен гуглить - твои проблемы

YoshkinKot

Пользователь

Регистрация: 20.06.2016

Сообщения: 13450

Рейтинг: 5328

YoshkinKot

Регистрация: 20.06.2016

Сообщения: 13450

Рейтинг: 5328

Meepka сказал(а):

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

Нажмите, чтобы раскрыть...

твоя идея плоха, по очевидной причине: людям свойственно ошибаться

 

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

 

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

 

как говорится сам дурак — смотри контракт

 

а тут ваще можно спокойно расширить контракт и всё: мы взяли и решили более общую задачу, автокаст к булу + перевод в строку

 

это то, что называется хак, красивый код, и как по мне хороший стиль

 

а ты просто игнорируешь мой аргумент и говоришь: ну, не ошибайтесь, лол

 

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

 

 

Salovar

Пользователь

Регистрация: 12.07.2017

Сообщения: 4783

Рейтинг: 1007

Salovar

Регистрация: 12.07.2017

Сообщения: 4783

Рейтинг: 1007

YoshkinKot сказал(а):

твоя идея плоха, по очевидной причине: людям свойственно ошибаться

 

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

 

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

 

как говорится сам дурак — смотри контракт

 

а тут ваще можно спокойно расширить контракт и всё: мы взяли и решили более общую задачу, автокаст к булу + перевод в строку

 

это то, что называется хак, красивый код, и как по мне хороший стиль

 

а ты просто игнорируешь мой аргумент и говоришь: ну, не ошибайтесь, лол

 

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

 

 

Нажмите, чтобы раскрыть...

Чел зная название енума и либы не может проверить высказывание. Ты реально с ним ведешь диалог? Он же явно неадекватен

YoshkinKot

Пользователь

Регистрация: 20.06.2016

Сообщения: 13450

Рейтинг: 5328

YoshkinKot

Регистрация: 20.06.2016

Сообщения: 13450

Рейтинг: 5328

RedScoop сказал(а):

Идеальное решение https://ibb.co/mvDrsXf

Я тот чел, что словил 24 минуса

Нажмите, чтобы раскрыть...

зачем тебе тайпхинт и одновременно проверка типа ручками, при условии, что ты тернарник сделал?

 

вот это уже шиза по-моему

как гирляндой обвесился, надо знать меру

 

ты мог оставить тайпхинты и всё

а можно даже было бесплатно расширить контракт и убрать тайпхинт на аргумент

 

потому что я не вижу проблемы в

 

boolToWord(0) -> “False”

boolToWord(“lol”) -> “True”

 

это достаточно удобно использовать

 

Salovar сказал(а):

Чел зная название енума и либы не может проверить высказывание. Ты реально с ним ведешь диалог? Он же явно неадекватен

Нажмите, чтобы раскрыть...

Я привык общаться со стенами, мне норм. donowall.gif?1631623114

 

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

 

А неадекват может привести разговор в интересную плоскость, ранее не освещенную.

 

Тут окромя нас есть еще и публика, которая всё это читает и делает выводы.

Считай ты им обрывки лекций читаешь, а сам учишься формулировать и доносить свои мысли.

 

У меня вот не всегда получается, судя по фидбеку здесь и в жизни.

 

Люди жалуются, что мои объяснения чересчур мудреные и вообще для роботов каких-то. Но я вот учусь выражаться чуть проще, но иногда не получается важные нюансы донести.

 

В общем, это моя life-long проблема и я форумы для этого использую. Потому что где еще найти столько поводов умничать и простыней писать.

 

Совсем недавно я тут учился правописанию и синтаксису в русском языке, по которым у меня в школе были двойки. А тут как бы есть прикол запятые правильно ставить и текст форматировать. Доставляет мне извращенное удовольствие. И вроде как даже научился.

Gachi boSS

Пользователь

Регистрация: 15.05.2016

Сообщения: 6161

Рейтинг: 1220

Gachi boSS

Регистрация: 15.05.2016

Сообщения: 6161

Рейтинг: 1220

Тернарный оператор разве не является синтаксическим сахаром? pekaReally.png?1619501122

Semenofsky сказал(а):

RLLH3an.png

24 минуса получил чел, но месседж же по факту

Типо сверху реально шок контент

Нажмите, чтобы раскрыть...

Токсиков никто не любит, да и это не значит, что так он будет писать дальше. Абсолютно справедливо попущен в комментариях.

YoshkinKot

Пользователь

Регистрация: 20.06.2016

Сообщения: 13450

Рейтинг: 5328

YoshkinKot

Регистрация: 20.06.2016

Сообщения: 13450

Рейтинг: 5328

Gachi boSS сказал(а):

Тернарный оператор разве не является синтаксическим сахаром? pekaReally.png?1619501122

Нажмите, чтобы раскрыть...

нет не является

 

потому что есть фундаментальная разница между statement и expression

тернарный оператор это не statement, это expression

 

есть языки, где есть только выражения (ну например семейство языков LISP)

есть языки, где в основном есть только statements (очевидным примером будет язык ассемблера наверное)

есть языки, где есть: и то, и другое (например обсуждаемый выше JS)