Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обсуждение шаблонов проектирования (стереотипы), связь между кодом C++ и проектированием 
:(
    Опции темы
atomicxp
  Дата 17.6.2009, 22:37 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 2.5.2009
Где: Удмуртия, Ижевск

Репутация: 1
Всего: 1



Цитата(Леопольд @  17.6.2009,  15:19 Найти цитируемый пост)
Почему-то у меня складывается ощущение что Вам стоит перечитать Страуструпа

Именно с него всё это и пишу, "Язык программирования C++ 3-е издание", у меня бумажная версия с 1999 года, и пожалуй эту книгу я уважаю больше всех по тематике C++. То что пока тут написал относится к главам с 10 по 15 - механизмы абстракции.

Цитата(Леопольд @  17.6.2009,  15:19 Найти цитируемый пост)
1. "Шаблоны. Справочник разработчика" David Vandevoorde, Nicolai M. Josuttis
2. "Современное проектирование на С++" Александреску (именно в этом порядке)

Первое не читал, второе читал. Сразу стоит отметить, что у Александреску другой подход, не такой как у Страуструпа, а я больше склоняюсь к идеям последнего. К тому же я не заставляю людей пользоваться тем, что описал. Это не более чем мысли вслух, большая часть которых остаётся невысказанной. В рассуждениях уже докатился до универсальной абстракции с которой можно построить абстракцию для построения программ на реальных объектно-ориентированных системах программирования, в основе которые даже не важно какой язык, C++, Java, C# или что-то другое.
PM MAIL WWW Skype GTalk Jabber   Вверх
Леопольд
Дата 18.6.2009, 07:35 (ссылка) |  (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 943
Регистрация: 17.6.2009

Репутация: 10
Всего: 13



Цитата(atomicxp @ 17.6.2009,  22:37)
Цитата(Леопольд @  17.6.2009,  15:19 Найти цитируемый пост)
1. "Шаблоны. Справочник разработчика" David Vandevoorde, Nicolai M. Josuttis
2. "Современное проектирование на С++" Александреску (именно в этом порядке)

Первое не читал, второе читал. Сразу стоит отметить, что у Александреску другой подход, не такой как у Страуструпа, а я больше склоняюсь к идеям последнего.

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

По поводу книжки Страуструпа - шаблоны и их возможности, затронуты недостаточно глубоко. Я думаю, ему просто не хватило места. Объём книги мог увеличится как минимум в полтора раза. А Мейерса всё же стоит почитать. Тем более, читатется лекго и непринуждённо, после Страуструпа. smile

В общем, следует иметь ввиду что в книжке Страуструпа описанно не всё. Насколько я помню (читал эту книгу два года назад), он недостаточно детально объяснил раздельную компиляцию. Про предкомпилированные заголовочные файлы ни слова не сказанно (полагаю, для шаблонов это имеет серьёзное значение). Не думаю что я перечислил всё что он "упустил", это первое что пришло в голову.

Это сообщение отредактировал(а) Леопольд - 18.6.2009, 07:43


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
atomicxp
  Дата 18.6.2009, 13:22 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 2.5.2009
Где: Удмуртия, Ижевск

Репутация: 1
Всего: 1



Цитата(Леопольд @  18.6.2009,  07:35 Найти цитируемый пост)
А Мейерса всё же стоит почитать. 

Стоит, это одна из книг которую бы я тоже рекомендовал для прочтения.

Цитата(Леопольд @  18.6.2009,  07:35 Найти цитируемый пост)
Про предкомпилированные заголовочные файлы ни слова не сказанно (полагаю, для шаблонов это имеет серьёзное значение).

Приведи пример в коде. У Страуструпа так плотно записано множество идей, техник, правил, и много всего, что даже после десяток прочтений находишь нечто новое. В целом же работа с заголовочными файлами достаточно подробна описана в главе 9.

Цитата(Леопольд @  18.6.2009,  07:35 Найти цитируемый пост)
Шаблоны не следует упускать из виду...

Конечно нет, но заметь, что есть шаблоны функций, и шаблоны классов, и в зависимости от того, что программист берёт в основу, получающаяся система координально различается. Для того  чтобы выполнить операцию, не обязательно связывать её с конкретным объектом, в котором она чаще всего воздействует на этот объект, то есть на агрегированные члены этого или базовых классов.

Иногда это менее очевидно, например, в классе приложения может быть метод - запустить окно в потоке приложения. Иногда более, в классе спискадобавить элемент в список. Хотя, общая черта куда засунуть тот или иной метод я думаю уже видна из моих примеров.

Здесь так же стоит отметить, что STL и Boost это стиль Александреску, то есть там нет чёткого разделения указанного выше. Мне это больше напоминает модульное программирование, когда есть классы заключающие в себе наборы функций вне зависимости от принадлежности, или вообще находящиеся в глобальном пространстве имён.
PM MAIL WWW Skype GTalk Jabber   Вверх
Lazin
Дата 18.6.2009, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(atomicxp @  18.6.2009,  13:22 Найти цитируемый пост)
Здесь так же стоит отметить, что STL и Boost это стиль Александреску, то есть там нет чёткого разделения указанного выше. Мне это больше напоминает модульное программирование, когда есть классы заключающие в себе наборы функций вне зависимости от принадлежности, или вообще находящиеся в глобальном пространстве имён. 

это как? давай на конкретных примерах, а то у меня нет времени все это читать
PM MAIL Skype GTalk   Вверх
unicuum
  Дата 18.6.2009, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 16.3.2005
Где: Рашка

Репутация: 1
Всего: 8



Цитата(Lazin @  18.6.2009,  13:59 Найти цитируемый пост)
это как? давай на конкретных примерах, а то у меня нет времени все это читать 

Ну давай. Обычно когда люди берут STL, они сбрасывают пространство имён std до глобального. Проблема в том, что каких-либо ещё уровней вложения особо и не предусмотрено. Даже если каждый раз писать std:: с точки зрения проектирования это ничем не отличается от глобального пространства, максимум может дать защиту от пересечений с собственной библиотекой программиста.

Перейдём к организации стандартной библиотеки шаблонов. В ней присутствуют шаблоны условно разделённые на группы, алгоритмы, ввод/вывод, итераторы, контейнеры, строки, утилиты, числа и так далее. Взять хотя бы первое - алгоритмы, это уж явно не объектно-ориентированное программирование. Если вглядеться внутрь, то увидим - немодифицирующие операции с последовательностями, модифицирующие операции с последовательностями, сортировка последовательностей, работа со множествами, операции с кучей, минимумы и максимумы, перестановки.

Всё это наборы операций, и при рассмотрении многих других групп видна та же картина. Не абсолютно везде конечно, но в подавляющей части уж точно. Это всё архитектурные составляющие, так спроектировали библиотеку. Мне думается влияние на это оказал Си, то есть пытались сделать некое промежуточную библиотеку, которая позволила бы Си программистам перейти на C++, вот только в Си нет классов.


--------------------
user posted image
обычный день на винграде
PM   Вверх
mes
Дата 18.6.2009, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(unicuum @  18.6.2009,  13:41 Найти цитируемый пост)
бычно когда люди берут STL, они сбрасывают пространство имён std до глобального

Это проблема людей, а не библиотеки
Цитата(unicuum @  18.6.2009,  13:41 Найти цитируемый пост)
Проблема в том, что каких-либо ещё уровней вложения особо и не предусмотрено. 

Это тоже библиотеку никоем образом не касается

Цитата(unicuum @  18.6.2009,  13:41 Найти цитируемый пост)
Даже если каждый раз писать std:: с точки зрения проектирования это ничем не отличается от глобального пространства, максимум может дать защиту от пересечений с собственной библиотекой программиста.

А какую защиту Вы еще хотите ?

Цитата(unicuum @  18.6.2009,  13:41 Найти цитируемый пост)
Взять хотя бы первое - алгоритмы, это уж явно не объектно-ориентированное программирование. 

Да это не ООП, это следующий уровень абстракции. 

Цитата(unicuum @  18.6.2009,  13:41 Найти цитируемый пост)
Мне думается влияние на это оказал Си, то есть пытались сделать некое промежуточную библиотеку, которая позволила бы Си программистам перейти на C++, вот только в Си нет классов. 

Нет, то что Стл такая,  это влияние Степанова smile
Цитата

Criticism of OOP :
It would probably be true to say that Stepanov is totally unsupportive of OOP based upon his strong statements in interviews [1] which include:-

    * "I think that object orientedness is almost as much of a hoax as Artificial Intelligence..."
    * "I find OOP technically unsound.."
    * "I find OOP philosophically unsound. It claims that everything is an object. Even if it is true it is not very interesting - saying that everything is an object is saying nothing at all"
    * "I find OOP methodologically wrong..."





Это сообщение отредактировал(а) mes - 18.6.2009, 15:08


--------------------
PM MAIL WWW   Вверх
Lazin
Дата 18.6.2009, 15:48 (ссылка) |   (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(unicuum @  18.6.2009,  14:41 Найти цитируемый пост)
Взять хотя бы первое - алгоритмы, это уж явно не объектно-ориентированное программирование. Если вглядеться внутрь, то увидим - немодифицирующие операции с последовательностями, модифицирующие операции с последовательностями, сортировка последовательностей, работа со множествами, операции с кучей, минимумы и максимумы, перестановки.

Объясни мне, как ты собираешься реализовать в ООП стиле алгоритм sort, или for_each?
Если следовать твоей логике, то нужно каждому контейнеру добавить метод sort, да?
Вот теперь смотри, тебе понадобится по одному методу sort без параметров а так-же по методу sort(iterator iterator)(так-как мне может понадобиться отсортировать только часть данных), для каждого типа контейнера. Дальше, это все будет работать для контейнеров, но не будет работать для обычных указателей. Потом, разработчики, реализующие свои контейнеры, должны будут реализовать эти методы для своих контейнеров, если они хотят, что-бы они были stl совместимы. А еще у нас не один алгоритм sort, у нас много разных алгоритмов. Если ты знаком с комбинаторикой, то ты сможешь представить сколько кода придется написать только для stl, а сколько кода придется писать другим разработчикам - вряд-ли сможешь smile .
Это плохой дизайн.
В то-же время в STL все это сделано очень просто. У каждого контейнера есть методы возвращающие пару итераторов: begin и end, эти итераторы могут быть разных категорий - ForwardIterator, ReverseIterator, RandomAccessIterator. На этапе компиляции можно выяснить, к какой категории принадлежит этот итератор с помощью класса std::iterator_traits, а так-же с его помощью можно получить тип значения или ссылки. Это так-же работает для обычных указателей. Алгоритмы принимают итераторы(которые могут быть чем угодно) и получают все нужные им типы данных с помощью iterator_traits, они могут быть реализованы по разному для разных типов итераторов.
В итоге мы имеем следующее: не ООП алгоритмы работают с чем угодно; они могут быть специализированы для разных частных случаев; они могут работать с классами о которых разработчики стандартной библиотеки не имели представления; разработчикам достаточно написать класс - итератор для своих классов коллекций и все алгоритмы будут работать для их классов; можно писать STL совместимые алгоритмы, которые будут работать так-же как и стандартные, к примеру можно реализовать radix_sort, который будет работать с std::vector<..>, в случае, если алгоритмы будут методами - это будет невозможно. Одним словм, это правильный дизайн. smile 

Цитата(unicuum @  18.6.2009,  14:41 Найти цитируемый пост)
Проблема в том, что каких-либо ещё уровней вложения особо и не предусмотрено. Даже если каждый раз писать std:: с точки зрения проектирования это ничем не отличается от глобального пространства, максимум может дать защиту от пересечений с собственной библиотекой программиста.

во первых то, что есть в std зависит от того, какие заголовочные файлы подключены, во вторых, пространство имен std можно расширять, к примеру новыми алгоритмами, или можно специализировать iterator_traits для своего итератора и так далее smile 

Это сообщение отредактировал(а) Lazin - 18.6.2009, 15:50
PM MAIL Skype GTalk   Вверх
azesmcar
Дата 18.6.2009, 16:32 (ссылка)  | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(Lazin @  18.6.2009,  15:48 Найти цитируемый пост)
Если следовать твоей логике, то нужно каждому контейнеру добавить метод sort, да?

 smile 
кстати - std::string прекрасный пример того, чтобы произошло если
Цитата

следовать твоей логике

а если быть точнее - логике unicuum.
Саттера в своей книге more exceptional C++ упоминает об этом. Сколько там функций было? 44 кажется, не помню точно. Так вот, очень многие из этих функций можно было бы вынести за рамки класса, и это было бы правильнее. Например функция empty(). Она написана в каждом контейнере отдельно, хотя могла бы быть одна на всех.
Код

template <class T>
bool empty(const T& c) {
   return (c.begin == c.end());
}

там много чего написано, не хочу сейчас все цитировать. Но СТЛ даже более обьектен чем следовало бы.
PM   Вверх
unicuum
  Дата 18.6.2009, 17:33 (ссылка)  | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 16.3.2005
Где: Рашка

Репутация: 1
Всего: 8



Цитата(azesmcar @  18.6.2009,  16:32 Найти цитируемый пост)
Сколько там функций было? 44 кажется, не помню точно.

Не нужно комбинировать больше семи членов, сначало делают, потом удивляются что ООП уродское, а это не ООП на самом деле.

Цитата(Lazin @  18.6.2009,  15:48 Найти цитируемый пост)
Если ты знаком с комбинаторикой, то ты сможешь представить сколько кода придется написать только для stl, а сколько кода придется писать другим разработчикам - вряд-ли сможешь smile .

Это всё понятно, но сейчас у тебя идёт речь о шаблонах, и о том, что они дают мощь при компиляции генерируя функции, классы и всё что угодно, уменьшая при этом код разработчиков. С этим согласен, это хороший способ писать как можно меньше, но к самому ООП и его парадигме это не имеет отношения и самое главное ей нисколько не противоречит. Главный принцип ООП характеризовал бы как - "Разделяй и властвуй".

Не нужно забывать, что методы классов можно сделать статическими, не обязательно использовать их через объект. Здесь дело в логической связи между тем, что лежит в одном классе, именно тот самый шаблон функционального дизайна описанный выше - класс должен отвечать за минимальную область деятельности. Чтобы скомбинировать методы в одном классе, они должны быть по настоящему связаны. Если таких классов наберётся много за связь должны отвечать пространства имён, но не нужно пытаться выполнить их роль, за счёт засовывания методов в один класс.


--------------------
user posted image
обычный день на винграде
PM   Вверх
mes
Дата 18.6.2009, 17:47 (ссылка)  | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(unicuum @  18.6.2009,  16:33 Найти цитируемый пост)
Главный принцип ООП характеризовал бы как - "Разделяй и властвуй".

откройте для себя АОП : http://ru.wikipedia.org/wiki/%D0%90%D1%81%...%BD%D0%B8%D0%B5 
может тогда получится понять, что ООП это не панацея.
smile

P.S. Вы зачастую приводите чужую одностороннюю  точку зрения, забывая что каждый кулик свое болото хвалит.
smile


Это сообщение отредактировал(а) mes - 18.6.2009, 17:50


--------------------
PM MAIL WWW   Вверх
unicuum
  Дата 18.6.2009, 18:07 (ссылка)  | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 16.3.2005
Где: Рашка

Репутация: 1
Всего: 8



Цитата(mes @  18.6.2009,  17:47 Найти цитируемый пост)
откройте для себя АОП : http://ru.wikipedia.org/wiki/%D0%90%D1%81%...%BD%D0%B8%D0%B5 
может тогда получится понять, что ООП это не панацея.
smile

P.S. Вы зачастую приводите чужую одностороннюю  точку зрения, забывая что каждый кулик свое болото хвалит.

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


--------------------
user posted image
обычный день на винграде
PM   Вверх
mes
Дата 18.6.2009, 18:17 (ссылка)  | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(unicuum @  18.6.2009,  17:07 Найти цитируемый пост)
о в этой теме даже обсуждаемые шаблоны проектирования принадлежат именно к объектно-ориентированному программированию.

Не принадлежат, а рассмотрены с точки зрения ООП. smile И ничто не мешает их рассмотреть по отношению к другому стилю программированния.  smile

Добавлено @ 18:20
Цитата(unicuum @  18.6.2009,  17:07 Найти цитируемый пост)
Если кому-то интересна другая точка зрения на процесс программирования в целом, то же аспектно-ориентированное программирование

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

Это сообщение отредактировал(а) mes - 18.6.2009, 18:20


--------------------
PM MAIL WWW   Вверх
Lazin
Дата 18.6.2009, 19:31 (ссылка)  | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(unicuum @  18.6.2009,  17:33 Найти цитируемый пост)
Главный принцип ООП характеризовал бы как - "Разделяй и властвуй".

тебе не кажется
Цитата(unicuum @  18.6.2009,  17:33 Найти цитируемый пост)
Чтобы скомбинировать методы в одном классе, они должны быть по настоящему связаны.

что ты сам себе противоречишь?

Цитата(unicuum @  18.6.2009,  17:33 Найти цитируемый пост)
Это всё понятно, но сейчас у тебя идёт речь о шаблонах, и о том, что они дают мощь при компиляции генерируя функции, классы и всё что угодно, уменьшая при этом код разработчиков. С этим согласен, это хороший способ писать как можно меньше, но к самому ООП и его парадигме это не имеет отношения и самое главное ей нисколько не противоречит. Главный принцип ООП характеризовал бы как - "Разделяй и властвуй".
на самом деле мой пост не о шаблонах, там фигурируют паттерны проектирования iterator и inversion of control (разрыв мозгазависимости) smile 
и где интересно я выступаю против ООП? smile 
Цитата(unicuum @  18.6.2009,  17:33 Найти цитируемый пост)
Не нужно комбинировать больше семи членов, сначало делают, потом удивляются что ООП уродское, а это не ООП на самом деле.

а почему именно 7, а не 8? smile
а если мне нужно перегрузить метод для множества разных аргументов, это по уродски или нет? smile 

Цитата(unicuum @  18.6.2009,  17:33 Найти цитируемый пост)
Не нужно забывать, что методы классов можно сделать статическими, не обязательно использовать их через объект.
о боже мой, а мы и не знали!! smile 
статическим, метод может быть тогда, когда он не использует данные экземпляра объекта, а если использует, то ты только усложнишь себе жизнь...

Цитата(unicuum @  18.6.2009,  17:33 Найти цитируемый пост)
Если таких классов наберётся много за связь должны отвечать пространства имён, но не нужно пытаться выполнить их роль, за счёт засовывания методов в один класс. 

пространства имен это фикция, в ООП нет такого понятия, это синтаксический сахар smile 
ты не видишь разницу между реальноми возможностями языка программирования и синтаксическим сахором, который призван улучшить читаемость кода smile 


вообще, обсуждение ушло куда-то не туда, лично я готов обсуждать что-либо имеющее отношение к практике, к примеру какой-либо случай применения определенного паттерна, а пустая болтовня только зря отнимает время smile 
PM MAIL Skype GTalk   Вверх
zim22
Дата 18.6.2009, 19:46 (ссылка) |    (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



Цитата(Lazin @  18.6.2009,  19:31 Найти цитируемый пост)
а почему именно 7

"Совершенный код" Макконнелл (стр.140)
6.3. Вопросы проектирования и реализации
подпункт Включение (отношение "содержит")
Цитата

Настороженно относитесь к классам, содержащим более семи элементов данных-членов
При выполнении других заданий человек может удерживать в памяти 7 +- 2 дискретных элемента (Miller, 1956). Если класс содержит более семи элементов данных-членов, подумайте, не разделить ли его на несколько менее крупных классов (Riel, 1996). Можете ориентироваться на верхнюю границу диапазона 7 +- 2, если данные-члены являются примитивными типами, такими как целые числа и строки, и на нижнюю, если они являются сложными объектами.

***
unicuum и atomicxp очень любят число СЕМЬ!  smile 
привожу их цитаты:
Цитата

Как известно для проектирования ООП систем разумно использовать шаблоны проектирования. Существует ряд правил, одно из которых было описано в книге "Совершенный код", например, группировать не более семи элементов в одной сущности (классе).

Цитата

То есть как пишут в книге "Совершенный код" автор С. Макконнелл, сам человек не может охватить больше семи сущностей за раз. Потому рекомендовано делить всё на логические группы не более семи.

Цитата

Как гласит правило объектно-ориентированного программирования, плохо, когда в одном классе больше семи сущностей.

Цитата

Одно из них правило семи - в классе нужно стараться держать не более семи элементов.

Цитата

Если элементов стало больше семи, то это не значит, что нужно немедленно начать всё делить. Это значит, что надо задуматься над реализацией, возможно в ней что-то неправильно, и она нуждается в перепроектировании.

Цитата

Эксперименты психологов, например Миллера, показывают, что максимальное количество структурных единиц информации, за которыми человеческий мозг может одновременно следить, приблизительно равно семи плюс-минус два.

Цитата

Я читал про скорочтение, так вот нетренированный человек за раз способен осмыслить лишь семь предметов. 

Цитата

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

***
интересно проследить, как рекомендация стала правилом:
Макконнелл:
Цитата

Если класс содержит более семи элементов данных-членов, подумайте, не разделить ли его на несколько менее крупных классов

atomicxp | unicuum
Цитата

Как гласит правило объектно-ориентированного программирования, плохо, когда в одном классе больше семи сущностей.

smile

Это сообщение отредактировал(а) zim22 - 18.6.2009, 19:59


--------------------
PM MAIL   Вверх
unicuum
  Дата 18.6.2009, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 16.3.2005
Где: Рашка

Репутация: 1
Всего: 8



Цитата(zim22 @  18.6.2009,  19:46 Найти цитируемый пост)
unicuum и atomicxp очень любят число СЕМЬ!  smile 
привожу их цитаты:

Ну, это я один на самом деле, хотя не важно. smile 


--------------------
user posted image
обычный день на винграде
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1339 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.