
Ваша оценкаЦитаты
Аноним11 ноября 2025 г.Читать далееЦиклы
Проверьте, не лучше ли подходит while вместо for.
Создавайте цикл изнутри наружу.
Вход в цикл выполняется сверху.
Код инициализации расположен перед циклом.
Бесконечные и событийные циклы конструируются явно.
Заголовок цикла содержит только управляющий код.
Тело цикла обрамлено и выполняет одну функцию.
Служебный код сгруппирован, вложенность не более трех уровней.
Длинное тело вынесено в отдельный метод.
Манипуляции с индексом не выполняются без необходимости.
Индекс имеет смысловое имя и порядковый тип, пересечений индексов нет.
Условие завершения очевидно, счетчики безопасности и break или continue применяются корректно.
Циклы сложны. Сохраняйте их простыми.
Индексы называйте понятно и используйте только с одной целью.Логика и выражения
Упрощайте логические выражения и делайте их читаемыми.
Избегайте глубокой вложенности.
Структурное программирование строит программу из последовательностей, выборов и итераций.
Теоремы Деморгана. not A и not B эквивалентно not (A or B). A и B эквивалентно not (not A or not B).Тестирование
Каждому требованию и аспекту проектирования соответствует отдельный тест.
Каждая строка кода покрыта хотя бы одним тестом.
Пути «определение — использование» протестированы. Типичные ошибочные пути потока данных проверены.
Граничные условия покрыты: простые и сложные комбинации, ±1 относительно границ.
Проверены неверные типы данных, типичные значения, минимальные и максимальные конфигурации, совместимость со старыми данными и окружениями.
Результаты тестов легко проверяются вручную.
Тесты до кода требуют сопоставимого времени, но сокращают цикл регистрация — отладка — исправление.
Ошибки концентрируются в немногих дефектных классах и методах. Найдите, перепроектируйте и перепишите.
Автоматизация тестирования практически необходима для регрессий.Рефакторинг
Разумные причины. Дублирование кода. Чрезмерные размеры методов и циклов. Низкая связность. Перегруженные типы. Неудачные имена. Бродячие данные. Чрезмерное знание о чужих деталях. Открытые данные‑члены. Комментарии вместо простого кода. Код «на будущее».
Безопасный подход. Изменения как часть системной стратегии. Сохранение исходного состояния. Независимые малые шаги под покрытием тестов.Оптимизация
Оптимизируйте только после измерений.
Прекращайте проверку сразу после получения ответа.
Упорядочивайте проверки по частоте.
Разворачивайте и упрощайте циклы.
Минимизируйте работу внутри циклов.
Используйте сигнальные значения в поиске.
Кэшируйте часто используемые значения.
Снижайте стоимость обращений к массивам и выражениям.
Встраивайте методы, если это оправдано.Качество
Эффективность — использование системных ресурсов.
Надежность — выполнение функций в заданных условиях.
Целостность — предотвращение неавторизованного или некорректного доступа к программам и данным.
Правильность — безошибочность количественных результатов.
Живучесть — продолжение работы при недопустимых данных или в напряженных условиях.
Концентрация на одной внешней характеристике качества может улучшать или ухудшать другие, а может и не влиять.
Пользователей волнуют внешние характеристики. Программистов — внешние и внутренние.Абстракции и архитектура
Программа разделяется на уровни абстракции.
Хорошая архитектура позволяет сосредоточиться на верхних уровнях и скрывает детали нижних.
Если работаете на низком уровне, создавайте более высокие удобные уровни. Полная работа на низком уровне — борьба со сложностью.
Организация выражений. Группы связанного кода не пересекаются. Если пересекаются, реорганизуйте.Требования и аналитика
Спецификация включает функциональные требования и ограничения.
Разработка и управление требованиями связаны и требуют актуализации версий.
Определения. Бизнес‑требование. Бизнес‑правило. Ограничение. Внешнее требование к интерфейсу. Характеристика. Функциональные и нефункциональные требования. Атрибут качества. Системное и пользовательское требования.
Приемы формулирования. Концепция и границы. Классы и представители пользователей. Интервью и семинары. Наблюдения и опросы. Анализ документов и проблем. Повторное использование. Моделирование и прототипирование. Анализ осуществимости. Приоритизация. Словарь данных. Анализ интерфейсов. Распределение по подсистемам. Шаблон спецификации. Идентификаторы и источники.
Поступательная очистка деталей — основной девиз. Действия выполняются попеременно и повторяются.
Итеративный процесс. Выявление. Уточнение. Редактирование. Спецификации. Заполнение пробелов. Переоценка. Подтверждение и исправление.
Обязанности аналитика. Мост между клиентом и разработкой. Сбор ожиданий. Трансляция в требования. Согласование ограничений.
Последовательность встречи. Подготовка границ и ресурсов. Подготовка вопросов и моделей. Проведение семинара. Документирование и рассылка открытых вопросов.
Методы выявления зависят от типа проекта. Массовый продукт. Корпоративное ПО. Замена и обновление. Встроенные системы. Распределенные участники.
Заинтересованные лица. Пользователи и покупатели. Руководство. Маркетинг и сбыт. Разработчики и архитекторы. Тестировщики и аналитики. Поддержка. Юристы и аудиторы. Сертифицирующие и регулирующие органы. Подрядчики и поставщики.
Управление требованиями. Процесс изменений и анализ влияния. Базовые и контрольные версии. Хронология и состояние. Проблемы и трассируемость. Инструменты и обучение. Планирование на основе требований. Управление рисками.
Шаги к реализации. Сформулировать пользовательские требования. Вывести функциональные. Смоделировать. Определить атрибуты качества. Спроектировать прототипы и архитектуру. Распределить по компонентам. Спланировать выявление. Разработать тесты на основе требований. Проверить требования.112
Аноним30 мая 2024 г.Если вы не знаете, почему это работает, вероятно, оно и не работает на самом деле1115
Аноним19 июня 2021 г.Карл Вигерс сообщает, что тестирование, выполняемое без измерения покрытия кода тестами, обычно охватывает только 50-60% кода.
1161
Аноним25 мая 2021 г.Он улучшает моральный климат. Осознание того, что продукт работает даёт потрясающий положительный заряд. Практически не имеет значения, что он делает. Разработчики будут рады, даже если продукт будет рисовать прямоугольник на экране! При ежедневных сборках с каждым днём всё большая часть продукта начинает работать, и это поддерживает дух на высоте.
1166
Аноним10 июня 2018 г."Любой дурак способен отстаивать свои ошибки - большинство дураков именно так и делают." Дейл Карнеги
1506
Аноним19 мая 2018 г."Любой дурак может написать код, понятный компьютеру. Хорошие программисты пишут код, понятный людям."
Мартин Фаулер1525
Аноним14 апреля 2018 г."Не бывает кода, настолько громоздкого, изощренного или сложного, чтобы его нельзя было ухудшить при сопровождении." Джеральд Вайнберг
1392
Аноним3 марта 2018 г.Отлаживать код вдвое сложнее, чем писать. Поэтому, если при написании вы используете весь свой интеллект, вы по определению недостаточно умны, чтобы ее отладить. Брайан Керниган.
1395
