ОО одним предложением ( не про друзей и член )
От: pvoid28 Россия  
Дата: 24.11.04 10:38
Оценка: 8 (4) +1
Краткий конспект "OO in one sentence: Keep it DRY, Shy and Tell the other guy"
Andy Hunt, Dave Thomas. IEEE Computer Society 2004. from pragmaticprogramming.com
----------------------------------------------------------------------------------

1. Введение:
Некоторые считают что освоение объектно-ориентированного программирования — трудный и отнимающий время процесс. Но должно ли оно быть таким трудным? И так ли специфичны эти трудности для ОО? Многие краеугольные камни и техники ООП применимы для других парадигм. Если вы пишите скрипты и командные файлы — используйте ОО.

2. Что есть хороший код?
Гибкость.

3. DRY (Don't Repeat Yourself)
Каждая часть знания должна иметь одно, непротиворечивое и официальное представление в системе.

4. Keep it shy
Лучший код очень застенчив. Он как четырехлетний ребенок должен прятаться за юбку матери, не должен раскрывать много о себе, не разговаривать с посторонними и поменьше совать нос не в свои дела.
Т.е. следует избегать ненужных зависимостей (coupling), которые могут быть static, dynamic, domain, temporal

static (другая часть кода нужна при компиляции)
Наследование — типичная причина тащить больше чем нужно. Оставьте наследование для отношения "является" (is-a) и используйте делегирование для отношений "имеет" (has-a), "использует" (uses-a).

Динамическая зависимость. (at runtime)
"Крушение поезда" — getOrder().getCustomer().getAddress().getState()

Domain coupling — зависимость по предметной области — имеет место при встраивании бизнес правил и политик в код. Если мир становится слишком изменчивым неплохо поместить их в метаданные, базы данных, файлы настройки.

Temporal coupling — есть зависимость от времени исполнения других частей кода. Всегда планируйте потокобезопасные решения.

5. Tell the other guy
"Tell, Don't Ask"( IEEE Software Jan./Feb. 2003, p.10 ) — говорите, а не спрашивайте.
Думать о вызовах функций — плохая метафора. Лучше думать о посылке сообщений.
"Посылка сообщения" отражает атмосферу апатии. Я шлю приказ или запрос и мне не важно кто и (особенно) как это сделает. Просто чтобы было сделано. Этот сервис-ориентированный, операционно-центрированный подход критически важен для хорошего кода.

Даже командные файлы выигрывают от такого подхода. Когда работает команда fsck, она невидимо для пользователя определяет тип файловой системы и запускает делегата fsck.msdos или fsck.vfat.

=====================================================================================
P.S. Можно еще раз позавидовать буржуинам и порадоваться за них — какие яркие метафоры они находят для своих идей.
У, стали проги мои стожуковыми...Устал жутко...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.