Что означает эта цитата программного обеспечения? - PullRequest
2 голосов
/ 07 июня 2009

Я читал Code Complete (2-е издание) и натолкнулся на цитату на полях на странице 87 Бертрана Мейера.

Сначала не спрашивайте, что делает система; спросите, ЧТО это делает!

Что именно здесь пытается донести мистер Мейер. У меня есть некоторые грубые идеи, но я хотел бы убедиться, что я действительно понимаю.

Ответы [ 6 ]

3 голосов
/ 07 июня 2009

... Итак, это вторая ошибка телеологии - приписать цели поведение к вещам, которые не являются целенаправленный, возможно, даже не думать о вещах как о живых и одухотворенный, но только думающий, Х происходит для того, чтобы Y. "Для того, чтобы" это менталистический язык, хотя это, кажется, не называет нагло психическое свойство, как «боязливое» или «думает, что может летать». & Mdash; Элиэзер Юдковски, теоретик искусственного интеллекта занимается самоусовершенствованием ИИ со стабильными целями

Бертран Мейер проповедует, что здравые рассуждения о системах основаны на знании того, какие конкретные объекты изменяются системой; цель изменений является эмерджентным свойством.

2 голосов
/ 07 июня 2009

Я полагаю, что здесь дело не в том, что делает система, а в том, какие данные она использует и что это за операции.

Это обеспечивает два основных изменения мышления:

  • Сначала вы думаете о данных и понятиях
  • Вы думаете об операциях с этими данными

С этими двумя «базовыми показателями» вы будете лучше подготовлены к организации системы для достижения ваших целей, чтобы операции с данными были понятны и имели смысл.

По сути, он закладывает фундамент, чтобы иметь возможность писать «контракты» в коде, который вы пишете.

0 голосов
/ 07 июня 2009

Домен-управляемый дизайн ... Поймите проблему, для решения которой предназначена программа. Какими сущностями «домена» (абстракциями данных) манипулирует система? И что это делает с этими объектами домена?

0 голосов
/ 07 июня 2009

Фред Брукс так сказал:

«Покажите мне свои блок-схемы и скройте ваши таблицы, и я буду продолжать озадачиваться. Покажите мне ваши таблицы, и мне обычно не нужны ваши блок-схемы; они будут очевидны».

0 голосов
/ 07 июня 2009

Из поиска Google он взял Art Gittleman's Computing With C # и .Net Framework :

Бертран Мейер приводит пример Программа расчета заработной платы, которая производит зарплаты из расписаний. управление может позже захотеть расширить эту программу производить статистику или налог Информация. Функция начисления заработной платы само по себе может потребоваться изменить на производить еженедельные чеки вместо например, каждые две недели проверяет. процедуры, используемые для реализации оригинальная программа начисления заработной платы потребуется быть изменены, чтобы сделать любой из этих модификаций. Мейер отмечает, что любой из эти программы начисления заработной платы будут манипулировать такие же данные, сотрудник записи, правила компании, и так вперед.

Сосредоточение на более стабильной аспект таких систем, Майер заявляет Принцип: "Не спрашивай сначала Система делает: Спросите, ЧТО она делает! "; и определение: «Объектно-ориентированный дизайн это метод, который приводит к программные архитектуры на основе объекты каждой системы или подсистемы манипулирует (а не "то" функция, которую он должен был обеспечить). "

Сегодня мы воспринимаем диаграмму классов UML и другой подход OOAD как само собой разумеющееся, но это было то, что было «открыто» в процессе.

Также см. Объектно-ориентированный дизайн .

0 голосов
/ 07 июня 2009

Мое мнение таково, что цитата предназначена для поиска хороших абстракций в вашем программном обеспечении. Текст рядом с этой цитатой посвящен поиску объектов реального мира для разработки ваших классов.

Простой пример будет примерно таким:

Вы создаете программное обеспечение для банка. Поскольку ваше программное обеспечение работает с банковскими счетами, оно должно иметь класс для учетной записи. Затем вы начинаете думать, какие свойства имеют учетные записи, и какие взаимодействия вы можете иметь с учетными записями.

Конечно, эта цитата имеет больше смысла, если объекты, которые вы пытаетесь смоделировать, не так ясны, как этот случай.

...