В этой статье автор высказывает личное мнение, сформулированное на основе его собственного опыта и вкуса. Поэтому просьба не обижаться, если вы с ним не согласны. Конечно, оно может быть ошибочным – но это и стоит обсудить.
Рубрика «YAGNI»
SOLID – это не правила, а гайдлайны
2022-05-02 в 9:26, admin, рубрики: C#, di, KISS, solid, YAGNI, Блог компании Издательский дом «Питер», интерфейсы, ооп, Программирование, Проектирование и рефакторинг, Совершенный код, чистый кодЗарубежный опыт: как избавиться от 80% кода, увеличить скорость разработки и уменьшить количество ошибок
2022-02-09 в 10:13, admin, рубрики: KISS, YAGNI, абстракции, архитектура приложений, Блог компании МойОфис, микросервисы, оптимизация, Программирование, Проектирование и рефакторинг, разработка по, рефакторинг, упрощение кода, шаблоны проектированияМы продолжаем знакомить читателей нашего блога с интересными международными публикациями. Ранее мы перевели материал с Читать полностью »
Как мы избавились от 80% своего кода, повысив скорость разработки и уменьшив количество ошибок
2022-01-05 в 12:33, admin, рубрики: KISS, solid, YAGNI, абстракции, Блог компании М.Видео-Эльдорадо, мвидео, преждевременная оптимизация, Серверная оптимизация, Совершенный код, управление разработкой, шаблоны проектирования, ЭльдорадоОптимизация кода и развитие микросервисной архитектуры занимает значительную часть жизни команды разработчиков МВидео-Эльдорадо. Тем любопытней изучить опыт коллег за рубежом. Предлагаем вашему вниманию очередной пост на тему: «А как там у них». Читать полностью »
OCP против YAGNI
2021-07-11 в 7:20, admin, рубрики: ocp, YAGNI, Анализ и проектирование систем, ооп, Программирование, проектирование, Проектирование и рефакторинг, рефакторинг, Совершенный кодЭта статья является переводом материала OCP vs YAGNI.
В этом посте хочется осветить тему OCP и YAGNI – противоречия между принципом открытости/закрытости и принципом «вам это не понадобится».
OCP
Давайте начнем с того, что вспомним, что такое OCP. Принцип открытости/закрытости гласит, что: Объекты программного обеспечения (классы, модули, функции и т.д.) должны быть открыты для расширения, но закрыты для модификации.
Впервые он был представлен Бертраном Мейером в его канонической книге «Читать полностью »
Разработка формы на React. Принципы KISS, YAGNI, DRY на практике
2020-04-03 в 11:35, admin, рубрики: DRY, javascript, KISS, React, ReactJS, YAGNI, принципы, разработка, Совершенный код, формы, хукиЗдавствуйте, в этом туториале мы рассмотрим как разработать очень простую, но контролируемую форму в React, сфокусировавшись на качестве кода.
При разработке нашей формы мы будем следовать принципам «KISS», «YAGNI», «DRY». Для успешного прохождения данного туториала вам не нужно знать этих принципов, я буду объяснять их по ходу дела.Читать полностью »
Принципы разработки программного обеспечения
2018-06-11 в 10:41, admin, рубрики: apo, bduf, design code, DRY, KISS, lod, pola, YAGNI, принципы разработки, Программирование, Проектирование и рефакторинг
Доброго времени суток, читатель! Хочу поделиться небольшой статье посвященной самым известным принципам разработки программного обеспечения. Статья будет полезна скорее для начинающих разработчиков, потому что опытные вряд ли найдут здесь что-то новое. Но и новичкам тоже нужно что-то читать.
Читать полностью »
Пирамида тестов на практике
2018-05-20 в 11:38, admin, рубрики: CDC-тесты, devops, Galen, headless-браузер, json, junit, mockito, pact, REST-assured, selenium, solid, spring, tdd, wiremock, YAGNI, интеграционные тесты, контрактные тесты, Микроформаты, модульные тесты, пирамида тестов, Тестирование IT-систем, Тестирование веб-сервисов, управление разработкой, юнит-тестыОб авторе: Хэм Фокке — разработчик и консультант ThoughtWorks в Германии. Устав от деплоя в три ночи, он добавил в свой инструментарий средства непрерывной доставки и тщательной автоматизации. Сейчас налаживает такие системы другим командам для обеспечения надёжной и эффективной поставки программного обеспечения. Так он экономит компаниям время, которое эти надоедливые людишки тратили на свои выходки.
«Пирамида тестов» — метафора, которая означает группировку тестов программного обеспечения по разным уровням детализации. Она также даёт представление, сколько тестов должно быть в каждой из этих групп. Несмотря на то, что концепция тестовой пирамиды существует довольно давно, многие команды разработчиков по-прежнему пытаются неправильно реализовать её на практике должным образом. В этой статье рассматривается первоначальная концепция тестовой пирамиды и показано, как её воплотить в жизнь. Она показывает, какие виды тестов следует искать на разных уровнях пирамиды, и даёт практические примеры, как их можно реализовать.
- Важность автоматизации (тестов)
- Пирамида тестов
- Какие инструменты и библиотеки мы рассмотрим
- Пример приложения
- Юнит-тесты
- Интеграционные тесты
- Контрактные тесты
- Тесты UI
- Сквозные тесты
- Приёмочные тесты — ваши фичи правильно работают?
- Исследовательское тестирование
- Путаница с терминологией в тестировании
- Внедрение тестов в конвейер развёртывания
- Избегайте дублирования тестов
- Пишите чистый код для тестов
- Заключение
Примечания
Архитектурная пирамида приложения
2017-09-11 в 14:25, admin, рубрики: DRY, inversion of control, KISS, solid, YAGNI, Анализ и проектирование систем, архитектура приложений, ооп, Программирование, Проектирование и рефакторинг, Совершенный кодПрограммирование — достаточно молодая область знаний, однако, в ней уже существуют базовые принципы «хорошего кода», рассматриваемые большинством разработчиков как аксиомы. Все слышали о SOLID, KISS, YAGNI и других трех- или четырех- буквенных аббревиатурах, делающих ваш код чище. Эти принципы влияют на архитектуру вашего приложения, но помимо них существуют архитектурные стили, методологии, фреймворки и много чего еще.
Разбираясь со всем этим по отдельности, меня заинтересовал вопрос — как они взаимосвязаны? Пытаясь выстроить иерархию и вдохновившись небезызвестной пирамидой Маслоу, я построил свою пирамиду «архитектуры приложения».
О том, что из этого вышло — читайте под катом.
Читать полностью »
Liscript — web REPL: поцелуи, велосипеды и экскаваторы
2017-08-20 в 19:55, admin, рубрики: java, KISS, REPL, web, YAGNI, Программирование, Разработка веб-сайтов, функциональное программирование, холивар
Некоторое время назад я написал интерпретатор лиспоподобного языка, который назвал Liscript. Опубликовал несколько статей на Хабре, посвященных особенностям реализации ядра, TCO, GUI, REPL-ботов и т.п. Недавно добавил web-интерфейс REPL-у (ссылка в конце статьи).
При чем здесь поцелуи и экскаваторы? Думаю, большинству известны такие аббревиатуры, как KISS (keep it simple stupid — делай это проще, дурачок), YAGNI (You ain't gonna need it — Вам это не понадобится), а также высказывания людей разной степени великости про архитектурных астронавтов, «все должно быть сделано так просто, насколько возможно, но не проще», и т.п.
Допустим, перед вами стоит задача — выкопать яму. Какие есть варианты решения? Взять лопату и выкопать самому — дешево и сердито, но долго и возможно неоптимально (зависит от вашего уровня владения лопатой и размеров ямы). Отдать на аутсорс таджикам (не будем рассматривать здесь этот вариант, хотя я должен был его упомянуть). Взять экскаватор — быстро и эффективно, но затратно: бензин/аренда, плюс не факт, что он проедет в вашу садовую калитку, значит надо сносить/восстанавливать забор и т.д. Также, необходимо определиться с моделью (порой из 100500 вариантов), а если вы будете управлять им самостоятельно, надо разобраться во всех его рычагах и педалях.
Разумеется, если вы — профессиональный экскаваторщик, копаете по 200 ям за день, или вы стремитесь им стать, а изначальная задача (вырыть яму) нужна вам не сама по себе, а как тренировка или демонстрация ваших умений, тогда выбор очевиден (остается разве что вопрос модели). Но даже профессионал возьмет лопату, сажая цветы.
В общем, про выбор инструментов под задачи, и конкретные (подозреваю, что спорные) решения, которые я выбирал в процессе реализации проекта, под катом.
Читать полностью »
Business Natural Languages
2013-02-17 в 18:17, admin, рубрики: bdd, coffeescript, DDD, dsl, KISS, YAGNI, архитектура, ооп, Программирование, Проектирование и рефакторинг, метки: bdd, coffeescript, DDD, dsl, kiss, yagni, архитектура, оопПоскольку идея данного поста родилась у меня независимо от эпопеи с хлебопекарней, хочу вставить и свои пять копеек.
Итак, суть проблемы — поставить программный код в соответствие с бизнес-требованиями. Существуют замечательные методологии и техники, например, Behavior Driven Development (BDD), которые позволяют в декларативном стиле описать требуемое поведение системы (тесты).
Возникает вопрос — зачем описывать как должен работать код, если можно и сам код написать в этих терминах. Почему user story не может быть самой программой.
не код должен генерироваться из модели — модель должна быть кодом
Чтобы не томить читателей сразу перейду от слов к делу. Представим себе язык для программирования вот такого робота:
Warning! Данный пример служит только для иллюстрации идеи и не предназначен для приготовления пищи в реальной жизни. Автор не несет ответственности за вред здоровью нанесенный в результате употребления пищи, приготовленной с помощью данного примера.