Как стать автором
Обновить
1
0
Белоусов Сергей @belousovsw

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

Отправить сообщение

Почему вы ждете на входе конкретный объект кнопку а в коде у вас какая то обстрактная нода по итогу. Почему нельзя нормальный нэйминг использовать button, input_button, etc.

Потом смотришь исходники в чужих проектах и ничего не понятно что в коде происходит, приходится по 10 раз сверяться что же именно все таки в подобных переменных node, i, x, y лежит на самом деле.

А может кто-нибудь обьяснить как это работает?

        return [
            self::PENDING => 'orange',
            self::PAID => 'green',
        ][$this->value] ?? 'gray';   


/**
 * @method static self PENDING()
 * @method static self PAID()
 */
class InvoiceState extends Enum
{
    private const PENDING = 'pending';
    private const PAID = 'paid';

    public function getColour(): string
    {
        return [
            self::PENDING => 'orange',
            self::PAID => 'green',
        ][$this->value] ?? 'gray';   
    }
}


Спасибо.

По качеству вы напишите ровно такие же программы, как и мы программисты изготовим детали и соберем узел.
Этот спор ведёт обсалютно вникуда!
У меня на работе полно таких примеров.
Поэтому давайте каждый займётся своим делом.

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

Не позорно пока ты учишься писать код (неважно закончил ты "Лабач" или тракторист от рождения) и твои проекты не более чем поделка для души, собственной выгоды, или маленький интернет магазин/crm для знакомого/нанимателя.
Позор будет тогда когда твой проект, написанный для серьезного клиента, ты сам со временем не сможешь расширять и поддерживать из за своего собственного "быдлокода".


И судя по Вашей статье Вы ещё не встречались с серьезными нанимателями и деньгами за Вашу работу.


Спасибо.

6е правило, крайне неудачный пример. Именно в нем информативные график слева.

Спасибо, благодаря Вашему посту до меня наконец-то дошло что же всё-таки такое прототипы и как с ними работать. Очень легко и понятно объяснено.
Спасибо!

А что будет если Вы пишете веб приложение и юзер отправит в Ваш контроллер данные не через валидирующую форму а напрямую в контроллер, через url get/post запрос. Тогда это может сломать Вашу модель или не дай бог базу данных.

Да, обязательно стоит! Не слишком много в интернете информации о том как все внутри устроено, а это очень полезная информация.
Спасибо Вам за труд!

Доброго дня!
А если некоторые абоненты меняют оператора каждые 2 месяца, Ваш скрипт будет давать ложную информацию.

Да, я как-от не вникал в набор данных, просто скопипастил :(

Просто хотел избавится от лишних блоков else if
не могу редактировать свои коментарии
    $haystack = mb_substr($tx, 0, $length)
Я не очень в C но в PHP я скорей всего сделал бы так

........
$needles[4] = ["+%pi", "-%pi", "+Inf", "-Inf", "+Nan", "-Nan", "%nan", "%inf"];
$needles[3] = ["+%e", "-%e", "%pi", "Nan", "Inf", "%pi"];
.......
foreach ($needles AS $length => $needle) {
    if  (mb_strlen($tx) < $length) continue;
    $haystack = mb_substr($tx, 0, 4)
    if (in_array($haystack, $needle)) {
        return $length;
    }
    return 0;
}



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

if (
       (typeId != 4 && typeId != 5 && showBalance != 2 && !(showBalance == 0 ? balance >= -300 : balance < -300))
    || (typeId != 4 && typeId != 5 && showAct != -1 && !(showAct == act))
    || (typeId != 4 && typeId != 5 && showDog != -1 && !(showDog == dog))
    || (typeId != 1 && typeId != 4 && typeId != 5 && showFullAcc != 2 && !(showFullAcc == 1 ? fullAcc != 0 : fullAcc == 0))
    || (showToPay != 2 && !(showToPay == toPay))
    || (showFix != 100 && !(showFix == fix))
    || (showComment != 2 && !(showComment == 1 || showComment == 0 ? (showComment == 1 ? cc > 0 : (cc > 0 && ccn > 0)) : (showComment == 10 ? cs > 0 : (cs > 0 && ccn > 0))))
    || (!isEmpty(showManagers) && (!(showManagers.find(function (a){ return a == manager}) != undefined) == selectedMangers))
    || (!isEmpty(showServices) && (!(showServices.find(function (a){ return a == services}) != undefined) == selectedServices))
    || (!isEmpty(showTypeServices) && (!(showTypeServices.find(function (a){ return a == typeId}) != undefined) == selectedTypes))
    || (!isEmpty(firmIds) && !(firmIds.find(function (a){ return a == fId}) != undefined))
) {
    return false;
}

Искусство искусством, но когда бизнес меняется и через пол года год, тебя просят подправить бизнес логику в подобном выражении a=(b>3?(c<3?b+2:2):5) волосы встают дыбом! и тихо начинаешь себя ненавидеть и проклинать за подобный когда-то написанный код. :) поэтому всегда стараюсь использовать человеко понятные имена переменных и примерно как в статье агрегировать условия в более понятные и упорядочены блоки

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

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


Получится то же эффект что и у Вас в статье, только генерировать Вы будете не на этапе выборки, а на этапе вставки. Что при выборке даст высочайшую производительность.

Информация

В рейтинге
Не участвует
Откуда
Нижний Новгород, Нижегородская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Backend Developer, Fullstack Developer
Senior
От 400 000 ₽
Java
Spring Boot
SQL
Git
Docker
Bash
Golang
OOP