Руководство по HamsterCMS от TomoTomoTan
Ручной «Хомяк» – наглядное пособие по Hamster CMS. Предисловие и глава 1. - Как включить
Ручной «Хомяк» – наглядное пособие по Hamster CMS. Глава 2 - О шаблонах и содержимом
Ручной «Хомяк» – наглядное пособие по Hamster CMS. Глава 3 - Доступ к сайту через FTP, редактирование шаблона
Ручной «Хомяк» – наглядное пособие по Hamster CMS. Глава 4 - Устройство шаблона. Немного о включениях.
Ручной «Хомяк» – наглядное пособие по Hamster CMS. Глава 5 - Создание собственного шаблона. Загрузка файлов на сайт с помощью WebFTP

Частозадаваемые вопросы по хостингу | Вопросы по IRC | Веб-чат (работает в Opera 10.63/Win98 и современных браузерах)

Золотые правила программирования

Moderator: mak

User avatar
alsk
Матёрый писака
Posts: 248
Joined: Sun Jan 12, 2025 11:21 am
Has thanked: 18 times
Been thanked: 29 times

Золотые правила программирования

Post by alsk »

Кто какие правила знает, может по опыту сам вывел/понял/придерживается/следует?

Правила не из топ правил из интернета.

Я, например, ВСЕГДА в switch в default делаю стоп и логирование, на случай чего-то непредвиденного.

Code: Select all

         switch ($this->view_acc) {
            case 1:
                require '../des/acc_all.php';
                break;
            case 2:
                require '../des/acc_frend.php';
                break;
            case 3:
                require '../des/acc_private.php';
                break;
            default:
                $e->logerr_exit('error $view_acc in ' . __METHOD__);
                break;		//лишний брек в дефолте? та и х с ним
        }
###############################################
        switch ($this->action) {
            case '+':
                $this->new_crypto_balans = $this->one_user_current_balans + $this->second_digit;
                break;
            case '-':
                $this->new_crypto_balans = $this->one_user_current_balans - $this->second_digit;
                break;
            case '*':
                $this->new_crypto_balans = $this->one_user_current_balans * $this->second_digit;
                break;
            case '/':   //если вторая цифра ноль, помненять знак
                if ($this->second_digit == 0) {
                    $this->new_crypto_balans = -$this->one_user_current_balans;
                    break;
                }
                $this->new_crypto_balans = $this->one_user_current_balans / $this->second_digit;
                break;
            default:    //всегда должен быть дефолтное опове
                $e = new Err();
                $e->logerr_exit("unk action in cryptoCu");
                break;
        }
#####################################################
switch ($wsh) {
//друзі
//мои друзья и друзья польщов - если 5 то енопки држбы= . убрать лишие классы!
    case 1:
        $vld->is_vars_set($pg, $sort);
        $myfr = new MyAndOneUserFrends($_SESSION['uid']);
        $vld->is_numpg_correct_pg_sort($myfr);
        $user->view($myfr);
        break;
...
...
...
    default:
        $ip = new Ip();
        $e = new Err();
        $str = "unk wsh in show.php";
//        $e->logerr($str);
        $e->ins_err($ip->ip, $str);
//        $rd->rd2_404();
        exit;
        break;
}

Page::eop();
Потому что при отладке оно прям на стр напишет что не так да еще и в лог запишет где и в каком месте непорядок.

Какие правила вы применяете, используете?

ДОписываю: у меня лишние break в default: потому что я использую автодополнния/сокращения при кнопкотыканьи. для того шобы быстро создатть блок switch case я набираю а клавиатуре swca жму на Enter и оно у меня автоматом выводмится с несколькими case :

В ИДЕ давно так сделал и шаблоны автодополнения не пересматривал/не исправлял.

Дописываю: ого, а что если $this->one_user_current_balans уже будет минусовое. Нужно протестировать. Возможны проблемы. Как хорошо что я именно этот кусок решил показать.
User avatar
Ewo
Писака
Posts: 83
Joined: Sun Jul 13, 2025 1:20 pm
Has thanked: 17 times
Been thanked: 30 times

Re: Золотые правила программирования

Post by Ewo »

Я лет 5 не программировал ничего, планирую вернуться. Есть хорошее правило "преждевременная оптимизация - корень всех зол", выражающееся в том, что (упоминал о подобном в ветке компостроения) либо ты оптимизируешь самолет (конструируешь самолет небывалой конфигурации), либо ты на нем летишь из точки А в Б, используешь непосредственно как инструмент. И эти 2 понятия не должны пересекаться. Если ты начнешь вылизывать код, ты на этом и закончишь. Сначала сделай пусть вырвиглазную конструкцию, которая отвечает поставленной задаче, и уже затем принимайся за оптимизацию. Иначе угол зрения сузится до ковыряния лишь в 1 маленькой части большего без шансов на охват картины целиком, ты позабудешь об общей идее, делая оптимизацию ради оптимизации. То есть ты должен идти от общего к частному, а не наоборот. И да, выполнение задачи начинается с поиска (изготовления) инструмента под эту задачу - тоже как правило.
выгрузка сознания.. 3% выполнено
User avatar
alsk
Матёрый писака
Posts: 248
Joined: Sun Jan 12, 2025 11:21 am
Has thanked: 18 times
Been thanked: 29 times

Re: Золотые правила программирования

Post by alsk »

Ewo wrote: Tue Jul 22, 2025 1:51 pm Есть хорошее правило "преждевременная оптимизация - корень всех зол",
да, я этим как-бэ наверное уже переболел. Если когда-то буду делать шото новое, то учту преждевременную оптимизацию.

И шо я оптимизировал?, только на своих выдумках. Я же не знал какая нагрузка где будет. ХОТЯ! Все мы встречали сайты где всё более-менее работает хорошо, а вот поиск там относительно-ужасно долгий.
Я у себя всё делал с умом(?) - у меня всё моментально. Я себя не перехвалил?

А при проэктировании бд я перестарался. Отдельно таблица для логина почты парольного хэша и статуса пользователя.

И отдельная таблица для опций пользователя.

Из-за этого при построении не простых скл-запросов возникают трудности. Нужно иногда join делать (ну я уже привык к этому), а если бы все было в одной таблице - было бы намного проще. Переписывать множество запросов я шото как-то ОЧЕНЬ не хочу.

Return to “Прикладное программирование”