Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
💸 Как сделать бизнес проще, а карман толще?
Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое раписание, но и напоминать клиентам о визитах тоже.
Проблема в том, что средняя цена по рынку за такой сервис — 800 руб/мес или почти 15 000 руб за год. И это минимальный функционал.
Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.⚡️ Для новых пользователей первый месяц бесплатно. А далее 290 руб/мес, это в 3 раза дешевле аналогов. За эту цену доступен весь функционал: напоминание о визитах, чаевые, предоплаты, общение с клиентами, переносы записей и так далее. ✅ Уйма гибких настроек, которые помогут вам зарабатывать больше и забыть про чувство «что-то мне нужно было сделать». Сомневаетесь? нажмите на текст, запустите чат-бота и убедитесь во всем сами! Правило #4, про горизонтальные пробелы
В конце строки пробелов быть не должно!!! Ну незачем там они. Пробелы ОБЯЗАТЕЛЬНЫ после запятой, как в обычном тексте. Пробелы полезны вокруг знака какой-нибудь операции. НЕправильно:
for(k=NUM; k; k--){ int tmp; tmp=some_func(k, arg2, arg3); printf(" %d\n", tmp); }
Правильно: for (k = NUM; k; k--) { int tmp; tmp = some_func(k, arg2, arg3); printf(" %d\n", tmp); } Правило #5, Не жалейте пустые строки, вставляйте где вам хочется, пожалейте лучше себя и преподавателя. Обязательны пустые строки перед и после определений функций. Логические части функции тоже нужно отделять друг от друга пустой строкой, например, цикл от предшествующих или последующих операторов. НЕправильно:
int func_1(void) { return 1; }int func_1(void) { return 2; } int main(void) { LIST *l = get_head(); double a, b; printf(" Hello.\n"); for (l; l-> next; l=l-> next) printf(" %s\n", l-> name); }; printf(" Bye.\n"); }
Правильно:
int func_1(void) { return 1; }
int func_1(void) { return 2; }
int main(void) { LIST *l = get_head(); double a, b;
printf(" Hello.\n");
for (l; l-> next; l = l-> next) printf(" %s\n", l-> name);
printf(" Bye.\n"); }
Правило #6, про объявления переменных Тип у переменной писать для КАЖДОЙ из них. На одной строчке - одна переменная. НЕправильно:
int a, b, c; float *q, w, u, z, tmp, ttt, qqq, aaa, bbb; ........ a, b, c, d, ttt, test, tt0: integer; q, w, u, z, ppp, ddd, ddd0, ddd23: real;
Правильно:
int a; int b; int c; float *q; ........ a: integer; b: integer; c: integer; q: real;
Это правило вызывает наибольшее недоумение. Однако, его соблюдение делает текст более ясным и, кроме того, в процессе разработки при возникновении необходимости удалить описание какой-либо переменной это можно сделать одним нажатием (команда удалить строку), а не многократным нажатием Del или Backspace. Впрочем, если, к примеру, в программе есть двойной цикл for(), то управляющие переменные цикла можно описать на одной строчке:
int j, k; int counter;
Однако, описания переменных, сильно различающихся по смыслу содержимого, следует помещать на разных строчках. Правило #7, про говорящие идентификаторы Идентификаторы (названия переменных, типов, подпрограмм) должны быть значимыми настолько, чтобы читающий текст программы мог понимать смысл всех переменных и т.д. без присутствия рядом автора. Читающим может оказаться и сам автор... где-то так через полгодика. И будет мучительно вспоминать, что же означало " ffff_1" и " aaa". Если есть какая-то производная, назовите ее Deriv, Proizvod, но никак не FF.
|