Приветствуем!

Вы находитесь на русскоязычном форуме Web1.0 Hosting. Пользоваться форумом имеют право все желающие, в том числе и на тематику, даже не по теме хостинга, в соответствующих разделах.

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

Сменить тему оформления можно в своём профайле после регистрации.

Руководство по 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: 376
Joined: Sun Jan 12, 2025 11:21 am
Has thanked: 27 times
Been thanked: 33 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: 140
Joined: Sun Jul 13, 2025 1:20 pm
Has thanked: 45 times
Been thanked: 59 times

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

Post by Ewo »

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

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

Post by alsk »

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

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

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

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

Из-за этого при построении не простых скл-запросов возникают трудности. Нужно иногда join делать (ну я уже привык к этому), а если бы все было в одной таблице - было бы намного проще. Переписывать множество запросов я шото как-то ОЧЕНЬ не хочу.
kirillkas
Мимо проходил
Posts: 1
Joined: Sat Nov 29, 2025 2:43 pm

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

Post by kirillkas »

Я обычно когда программы пишу сжимю все развернутые конструкции до такой степени что потом через 2 недели сижу думаю "Как это работает, емае, опять все переписывать" :D
User avatar
alsk
Злобный писака
Posts: 376
Joined: Sun Jan 12, 2025 11:21 am
Has thanked: 27 times
Been thanked: 33 times

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

Post by alsk »

щвс в забавных ошибках viewtopic.php?t=512 шото покажу
User avatar
september2489
Птица-говорун
Posts: 142
Joined: Fri Dec 27, 2024 4:29 pm
Has thanked: 73 times
Been thanked: 68 times

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

Post by september2489 »

kirillkas wrote: Sat Nov 29, 2025 2:49 pm Я обычно когда программы пишу сжимю все развернутые конструкции до такой степени что потом через 2 недели сижу думаю "Как это работает, емае, опять все переписывать" :D
Можно ещё включить режим паранойи и сказу делать обфускацию кода. :D Я для себя сделал вывод, что надо обязательно комментировать, всё, что только можно. Пусть даже это очевидная функция, но, действительно, через пару недель сидишь и думаешь как же это всё работает и что можно изменить, чтобы всё не сломалось... :lol:
User avatar
alsk
Злобный писака
Posts: 376
Joined: Sun Jan 12, 2025 11:21 am
Has thanked: 27 times
Been thanked: 33 times

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

Post by alsk »

september2489 wrote: Sat Nov 29, 2025 6:34 pm ...
Я для себя сделал вывод, что надо обязательно комментировать, всё, что только можно. Пусть даже это очевидная функция, но, действительно, через пару недель сидишь и думаешь как же это всё работает и что можно изменить, чтобы всё не сломалось... :lol:
Может когда-нибудь я покажу первые версии процедуршины. В планах давно-давно хочу немножко (похвастаться) показать эволюцию кода.

У меня дело дошло до того что я утром садился чтобы что-то исправить и вставал от компа в обед забыв что я хотел и не понимал что как и где работает и не работает. Ужасно все это было.

А сейчас даже ЮМЛьки (uml-диаграммы) делаю - очень помогает. Я раньше уже на форуме писал про это.
User avatar
september2489
Птица-говорун
Posts: 142
Joined: Fri Dec 27, 2024 4:29 pm
Has thanked: 73 times
Been thanked: 68 times

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

Post by september2489 »

Эволюция кода - это любопытно. Я в школьные годы такой дикий код писал, до сих пор стыдно. :D Работает - и ладно!

Не зря написание кода иногда сравнивают с искусством. Хорошо читаемый и понятный код - это совсем непросто. Даже сейчас, уже в сознательном возрасте, нет-нет да и проскочит какая-то лажа в коде, хотя, конечно, я стал более дисциплинированным в этом вопросе и слежу за собой.
User avatar
alsk
Злобный писака
Posts: 376
Joined: Sun Jan 12, 2025 11:21 am
Has thanked: 27 times
Been thanked: 33 times

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

Post by alsk »

...

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