Pull to refresh
1
Белоусов Сергей@belousovsw

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

Send message

Почему вы ждете на входе конкретный объект кнопку а в коде у вас какая то обстрактная нода по итогу. Почему нельзя нормальный нэйминг использовать 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) волосы встают дыбом! и тихо начинаешь себя ненавидеть и проклинать за подобный когда-то написанный код. :) поэтому всегда стараюсь использовать человеко понятные имена переменных и примерно как в статье агрегировать условия в более понятные и упорядочены блоки

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

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


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

Information

Rating
Does not participate
Location
Нижний Новгород, Нижегородская обл., Россия
Date of birth
Registered
Activity

Specialization

Бэкенд разработчик, Фулстек разработчик
Старший
From 400,000 ₽
Java
Spring Boot
SQL
Git
Docker
Bash
Golang
ООП