Аксиомы
Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
foxdev_7:аксиомы [10.11.2017 03:50] 127.0.0.1 внешнее изменение |
foxdev_7:аксиомы [10.05.2019 23:12] admin Approved(admin 2019/05/10 23:12) |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | {{indexmenu_n>20}}\\ | + | {{indexmenu_n>20}} |
Инструкция написана в стиле для суровых бородатых прагматиков, это сделано специально тк перфекционизма у вас и так море.\\ | Инструкция написана в стиле для суровых бородатых прагматиков, это сделано специально тк перфекционизма у вас и так море.\\ | ||
Конечно, все банально и все все знают, но именно акцентирование и приоритизация дают преимущество. | Конечно, все банально и все все знают, но именно акцентирование и приоритизация дают преимущество. | ||
- | ==== Аксиома 1. Прогресс ускоряется. ==== | + | ===== Аксиома 1. Прогресс ускоряется. ===== |
**Правило 1.1 Делай только требуемое.** \\ | **Правило 1.1 Делай только требуемое.** \\ | ||
Строка 20: | Строка 20: | ||
Время жизни ПО и технологий ограниченно, разрабатывать 5 лет, чтобы потом 1 год использовать - это глупость, соотношение должно быть 1 год разработки к 5 лет использования минимум. | Время жизни ПО и технологий ограниченно, разрабатывать 5 лет, чтобы потом 1 год использовать - это глупость, соотношение должно быть 1 год разработки к 5 лет использования минимум. | ||
- | **Правило 1.4 Priority: Users, Developpers, Machine** \\ | + | **Правило 1.4 Priority: Users, Developers, Machine** \\ |
Приоритет при выборе решений: сначала удобство для пользователей, потом удобство для программистов, и только при самой крайней необходимости, оптимизация для компьютера. | Приоритет при выборе решений: сначала удобство для пользователей, потом удобство для программистов, и только при самой крайней необходимости, оптимизация для компьютера. | ||
**Правило 1.5 Все должно работать сразу** \\ | **Правило 1.5 Все должно работать сразу** \\ | ||
- | У программы должны быть дефалты, чтоб без чтения док и без правки конфига можно было использовать, документация должна быть встроенной и обязательно с конкретными примерами. | + | У программы должны быть дефалты на все, чтоб без чтения док и без правки конфига можно было использовать, документация должна быть встроенной и обязательно с конкретными примерами. Большинство OpenSource программ не работает из коробки, например postfix,squid,nginx мы считаем это неверным, все должно работать сразу или с минимальными обязательными параметрами.\\ |
- | ==== Аксиома 2. Сложность систем растет. ==== | + | ===== Аксиома 2. Сложность систем растет. ===== |
**Правило 2.1 Не усложняй, используй бритву Оккама и принцип KISS.** | **Правило 2.1 Не усложняй, используй бритву Оккама и принцип KISS.** | ||
Строка 40: | Строка 40: | ||
Правила постройки кирпичиков, блоков и зданий схожи. | Правила постройки кирпичиков, блоков и зданий схожи. | ||
- | ==== Аксиома 3. Человек ограничен, учитывай природу человека ==== | + | ===== Аксиома 3. Человек ограничен, учитывай природу человека ===== |
Human nature, Human factors, Human limitations, Human readable, Different skills - миссия, идея, продукт, процесс разработки, архитектура ПО, стиль кода и все все все остальное должны учитывать человеческую природу, ограниченность человеческих возможностей. | Human nature, Human factors, Human limitations, Human readable, Different skills - миссия, идея, продукт, процесс разработки, архитектура ПО, стиль кода и все все все остальное должны учитывать человеческую природу, ограниченность человеческих возможностей. | ||
Строка 56: | Строка 56: | ||
Одновременно мозг может работать с 5-9 объектами и методами, и видеть 20-60 строк. Учитывай это в сути алгоритма, декомпозируй, объединяй, изолируй, поясняй. | Одновременно мозг может работать с 5-9 объектами и методами, и видеть 20-60 строк. Учитывай это в сути алгоритма, декомпозируй, объединяй, изолируй, поясняй. | ||
- | При выборе решений построения архитектуры и кода необходимо в первую очередь делать понятный код/структуру/архитектуру для человека даже если это идет в ущерб математической стройности ПО. Например, идеальная нормальная формы БД часто избыточная, сложная и неудобная в использовании и кодинге. | + | При выборе решений построения архитектуры и кода необходимо в первую очередь делать понятный читаемый и удобный для человека код/структуру/архитектуру даже если это идет в ущерб математической стройности ПО. Например, идеальная нормальная формы БД часто избыточная, сложная и неудобная в использовании и кодинге и не надо делать кривой и неудобный код ради третьей формы. |
**Правило 3.3 Учитывай языковые и социальные особенности** \\ | **Правило 3.3 Учитывай языковые и социальные особенности** \\ | ||
Строка 65: | Строка 65: | ||
В идеале разделять обработчики и задачи, если обработчик сломался - можно запустить новый, если задача кривая можно положить в пул кривых задач.\\ | В идеале разделять обработчики и задачи, если обработчик сломался - можно запустить новый, если задача кривая можно положить в пул кривых задач.\\ | ||
Ссылки лучше не занулять, а перенаправлять на нулобъект с фиктивными методами и прочие хаки.\\ | Ссылки лучше не занулять, а перенаправлять на нулобъект с фиктивными методами и прочие хаки.\\ | ||
- | Система(Программа) должна максимально выживать и обеспечивать сервис. | + | Система(Программа) должна максимально выживать и обеспечивать сервис.\\ |
+ | Уточнение демон,ядро,сайт,сервис не должны умирать после плохих данных, они должны их отложить в невалидные и обрабатывать новые данные.\\ | ||
+ | При этом демоны не нужно путать со скриптом, скрипт должен падать сразу как найдена ошибка аля set -eu, при этом он считается живым тк можно его вызвать заново с другими данными.\\ | ||
+ | Функция должна максимально быстро возвращать error, но при этом алгоритм должен уметь работать далее удалив кривые данные из всех списков и структур при это демон или ядро не должны умирать.\\ | ||
+ | Другими словами Обработчики не должны портиться от кривых данных.\\ | ||
**Правило 3.5 Делай Человекочитаемо, дебагопонятно, громко.** \\ | **Правило 3.5 Делай Человекочитаемо, дебагопонятно, громко.** \\ | ||
Строка 71: | Строка 75: | ||
Много логировать.\\ | Много логировать.\\ | ||
Выводить подробный стек ошибок до строчки кода прямо пользователю в расширенное окно ошибки.\\ | Выводить подробный стек ошибок до строчки кода прямо пользователю в расширенное окно ошибки.\\ | ||
+ | Для облачного сервиса и аутсорсинга ошибки можно слать админу разработчика, но очень громко.\\ | ||
+ | Лучше лишний раз послать ошибку директору или клиенту, чем потерять ее и не исправить.\\ | ||
Человекопонятные имена и константы.\\ | Человекопонятные имена и константы.\\ | ||
Человекочитаемые текстовые протоколы. | Человекочитаемые текстовые протоколы. | ||
Строка 89: | Строка 95: | ||
---- | ---- | ||
- | \\ туду учесть саморазвитие, геймификацию, и минимум 20/% на интересные задачи. \\ **Keep it short and simple ** [[https://ru.wikipedia.org/wiki/KISS_(принцип)|https://ru.wikipedia.org/wiki/KISS_(принцип)]] | + | \\ туду учесть саморазвитие, геймификацию, и минимум 20/% на интересные задачи. \\ |
+ | Близкие подходы:\\ | ||
+ | **Keep it short and simple ** [[https://ru.wikipedia.org/wiki/KISS_(принцип)|https://ru.wikipedia.org/wiki/KISS_(принцип)]]\\ | ||
+ | \\ | ||
- | \\ [[:open_carbon_7:принципы|Читать далее: Принципы Open Carbon 7]] | + | <code bash> |
+ | Почему опытные разработчики пишут тупой код https://habrahabr.ru/post/347166/ | ||
+ | Код — это общение между людьми и инструкции для компьютера, но значительно больше первое, чем второе. Компилятор сам заботится о преобразовании написанного программистом в машинный код. Часто имеет место несколько слоёв такого преобразования, например, когда Java компилируется в байт-код, который считывается виртуальной машиной и транслируется в итоге в нули и единицы. | ||
+ | Но код — это человеческий язык. Он объясняет все «кто», «что», «когда», «где», «как» и «почему» задачи, заодно давая инструкции компьютеру. Он должен иметь смысл и пять лет спустя, когда компания будет продана, и новая команда, никогда не видевшая этого кода, откроет его для улучшения и исправления. | ||
+ | </code> | ||
+ | |||
+ | \\ [[foxdev_7:принципы|Читать далее: Принципы Open Carbon 7]] | ||
+ | |||
+ | |||
+ | ~~OWNERAPPROVE~~ | ||