Правила программирования на С и С++. Главы 1-6 - Функция должна делать только одно дело
ОГЛАВЛЕНИЕ
Страница 58 из 93
51. Функция должна делать только одно дело.
Это обычно не очень удачная мысль - записывать то, что должна делать функция, через ее аргументы. Это должно делать имя функции. Например:
UpdateAllViews( CView *sender, long lhint, CObject *phint ){
// sender | lhint | phint | |
// NULL | xx | xx | Начальное обновление, вызываемое из обрамляющего окна |
// Cview* // // | 0 | CRect* | Вызывается, когда встроенный объект становится действительным. phint указывает на прямоугольник документа, сохраняя положение недействительного объекта |
// Cview* // // | 1 | CRect* | Сообщение, посылаемое объектом CView* ("sender" - передатчик). phint сохраняет для CView* обрамляющее окно его клиента. |
// ... |
Вам нужны вместо этого три функции: initial_update(), update_embedded_object() и update_view(). Верным ключом для понимания того, что здесь что-то не так, является туманная природа имен аргументов. Функции не должны передаваться "намеки". Ей должны даваться указания.