пятница, 17 сентября 2010 г.

Null Object и проблемы, которые он может принести

У Степанова в его лекциях по программированию мимоходом рассказывается о проблеме, которую привносит в template algorithm'ы STL'я и в обобщённое программирование на C++, требование IEEE стандарта к наличию специального значения в диапазонах double/float( NaN - Not a Number).

Подробности можно прочитать в Notes from the lectures of Programming by Alexandr Stepanov, но суть проблемы следующая:

Любая операция сравнения, которая выполняется с NaN, должна возвращать false. Такое требование закладывает мину практически во все алгоритмы из библиотеки STL, которые опираются на операции сравнения.

Степанов заявляет, что так как это случай редкий и касается только 1 типа, то можно его проигнорировать. Но здесь на сцену выходят Фаулер и Кириевски с их идеей рефакторинга "Introduce Null Object", и мы по сути получаем проблему, которую Степанов считал малозначащей, только перенесённую уже и в другие языки программирования, а не только на C++.

Дальше чуть более подробно мои размышления на эту тему...

суббота, 4 сентября 2010 г.

Спасибо Reddit - набрёл на чудную вещь:
10 things i hate about OOP

Часть изложеного - именно соль взаимоотношений с OOP. но оставшиеся процентов 20-30 такие забавные :)

"О языках" - всё красиво и подняло настроение, но почему вообще не вспомнили C#?  наверное он был слишком молод :)
Ну и конечно методология Чак Нориса ...