Побочные эффекты
От: arv  
Дата: 13.02.13 21:42
Оценка:
Иногда случается, что система ведет себя как надо не потому что это поведение заложено программистом, а просто потому что повезло. Побочные эффекты от реализации разных компонентов сложились, и все работает. Как, по-вашему, нужно поступить, чтобы в будущем эта особенность не исчезла? Написать компонент, который будет выполнять ненужную работу, чтобы гарантировать результат? Оставить все как есть и добавить юнит-тест?

В качестве иллюстрации приведу пример, который и заставил меня задуматься. Игрался с книжкой SICP. Представляем рациональное число в виде пары целых — числителя и знаменателя, и пишем программы для арифметики над этими числами. Потом серия улучшений — сокращение дроби при конструировании и нормализация знака — чтобы числитель и знаменатель не были отрицательными одновременно, и если дробь отрицательная, знак "минус" должен быть только у числителя. Я обнаружил, что нормализация не понадобилась — при сокращении дроби знак очень удачно оставался только там, где надо, хотя при разработке такой задачи не ставилось. Вот я и вспомнил — в реальном проекте такое тоже случается, и обычно все просто забивают — прислал заказчик ФТ, или мне в голову пришло, что неплохо бы обеспечить — а все уже и так есть. Работает — не трожь. Нутром чую, что плохой подход, а доказать не могу.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.