Какой рейтинг вас больше интересует?
|
Главная /
Каталог блоговCтраница блогера Software Design/Записи в блоге |
Что такое "идеальный код"?
2011-11-05 17:29:00 (читать в оригинале)Из обсуждения на форуме RSDN.RU (привожу свои доводы):
Судя по приведенному примеру, Вы предполагаете, что программный код – это набор символов. Но это неправильно! Это все равно, что предполагать, будто дом – набор кирпичей или строительных блоков.
Так же, как письменная речь не сводится к набору букв, так и программный код – нечто большее, чем набор символов. Код имеет иерархическую структуру, и на каждом уровне этой иерархии в качестве элементов выступают разные абстракции:
0. Символы.
1. Слова (операторы, переменные, константы, типы данных).
2. Функции и функциональные блоки.
3. Типы данных, определяемые пользователем.
4. Иерархии, группы связанных классов.
5. Библиотеки.
6. И т.д. – наверняка что-то пропустил.
Соответственно, когда я пишу, что хороший код – это компактный код, я отнюдь не имею в виду минимальное количество символов. Ибо хорошо понимаю, что код – это нечто большее, чем просто набор символов, и вижу различные системные уровни.
Блог Software Design проводит опрос своих посетителей
2011-10-30 17:39:00 (читать в оригинале)Задача про датчики: проектирование классов. Часть 2
2011-10-24 10:31:00 (читать в оригинале)Продолжение серии статей, посвящённой проектированию системы для метеостанции. Предыдущие статьи смотрите здесь:
Дальше »
С чего начать проектирование программы? Часть 1.
С чего начать проектирование программы? Часть 2.
Задача про датчики: построение функциональной архитектуры.
Задача про датчики: проектирование классов. Часть 1.
Каждая техническая система имеет своё назначение: авторучка – чтобы писать, автомобиль – чтобы передвигаться. Классы в этом правиле не исключение. Каждый класс тоже должен иметь какие-то свои, присущие ему, обязанности.
В предыдущей статье я предложил условно разделять классы на 2 категории:
- классы-сервисы:
- классы-данные.
Классы-сервисы предназначены для выполнения каких-то особых, специфичных задач. Синонимами понятия класс-сервис являются функциональный модуль или функциональная подсистема.
Классы-данные предназначены для временного или постоянного хранения групп данных, а также – для передачи этих данных от сервиса к сервису. Можно сказать, что классы-сервисы – это обработчики, а классы-данные – это коммуникации между этими обработчиками. У "железячников" есть хороший термин – шина данных. Так вот, проектирование классов-данных сродни прокладке шины данных, соединяющей одни функциональный подсистемы с другими.
Чтобы спроектировать классы-данные, нужно провести анализ потоков данных. Нужно понять, как отдельные функции, выполняемые в рамках процесса, связаны друг с другом по данным. Одним из наглядных инструментов для такого анализа является N-square диаграмма.
Тэги: diagram, n-square, архитектура, класс, класс-данное, проектирование, функциональный
Постоянная ссылка
Задача про датчики: проектирование классов. Часть 1
2011-10-17 00:02:00 (читать в оригинале)Бертран Мейер, один из идеологов объектно-ориентированного подхода, в своей книге "Объектно-ориентированное конструирование программных систем" пишет:
"В формальных и неформальных обсуждениях архитектуры проекта часто задаётся вопрос о роли некоторого класса. И часто можно слышать ответ: "Этот класс печатает результаты" или "Класс разбирает вход" – варианты общего ответа "Этот класс делает...".
Такой ответ обычно указывает на изъяны в проекте. Класс не должен делать одну вещь, он должен предлагать несколько служб в виде компонентов над объектами некоторого типа. Если же он выполняет одну работу, то, скорее всего, имеет место "Большое Заблуждение".
Вполне вероятно, что ошибка не в самом классе, а в способе его описания – использовании операционной фразеологии. Но всё-таки в этой ситуации лучше провести проверку класса".
Мейер, Бертран. Объектно-ориентированное конструирование программных систем / Пер. с англ. – М.: Издательско-торговый дом «Русская редакция», 2005. – стр. 717.
Если подытожить, то Мейер делает два утверждения:
- Класс должен отвечать за выполнение нескольких функций.
- О классе не нужно думать, как о чём-то, выполняющем какие-то обязанности.
Если с первым утверждением можно согласиться, а можно и поспорить, то второе – на мой взгляд, просто неверно. Если о классе нельзя ничего сказать в терминах обязанностей, или если он ничего не делает, то зачем он вообще нужен?
[OFF:] "Ваше представление о гениальности и талантливости?"
2011-10-15 17:04:00 (читать в оригинале)Отчёт об исследовании TREKO.RU, о котором я писал чуть раньше, опубликован. Его можно посмотреть здесь.
Категория «Размышления»
Взлеты Топ 5
+1561 |
1596 |
fiona |
+1550 |
1597 |
Алексей Чернов |
+1529 |
1559 |
Elen_i_rebyata |
+1513 |
1584 |
Малти_Ошер |
+1512 |
1589 |
Дрочливый_Драчун |
Падения Топ 5
-2 |
74 |
Рыжая_Лада |
-2 |
1264 |
Сайт визажиста Мокровой Инны блог |
-2 |
947 |
G-Traveler | Сайт заметок путешественника |
-5 |
53 |
BJohn |
-6 |
17 |
Аццкей_Сотона |
Популярные за сутки
Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.
взяты из открытых общедоступных источников и являются собственностью их авторов.