![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| manu |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 14.10.2004 Репутация: 2 Всего: 3 |
Недавно читал одну очень умную книжку по программированию, и там, между всего остального проскользнула такая мысль: маленькие, хорошо спроектированные классы гораздо легче использовать заново, системы построенные на них гораздо легче развиваются и поддерживаются и проч. и проч.
Приведу пример. Недавно мне нужна была библиотека для работы с подмножеством xml. Поиск в сети дал мне несколько результатов, однако ни одно меня не устроило либо из-за слишком большого и непонятного интерфейса либо из-за кривизны написания. Поэтому я решил написать эту библиотеку сам. Вот какие классы у меня получились: xml::format -- здесь хранятся константы и некоторые функции, класс чем-то похож на char_traits; xml::element -- этот класс содержит всего три поля: название элемента, его атрибуты и дочерние элементы, также есть несколько вспомогательных функций, напр., есть функция, которая находит по названию элемента, имени атрибута и его значению элемент. Т.е. xml::element занимается только хранением данных. xml::parser -- этот класс читает xml::element из потока. Коротко говоря, ему скармливаешь std::istream и xml::element, а он читает из потока текст и на его основе строит элемент. xml::renderer -- это класс наоборот, пишет в ostream содержимое xml::element. xml::document -- этот класс наследуется от xml::element. Ему в конструкторе передается имя файла и он считывает его при конструировании и записывает в него при удалении данные из xml::element. Что мы видим? Очень простая структура. Легко понимается, улучшается, изменяется. Общий размер кода -- всего 10 килобайт. Итак, я прихожу к выводу о важности правильного проектирования. Важности четких и неизменяемых интерфейсов. Жду от уважаемых мастеров комментариев. |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
Вообще лучше всего используются функции. Если они независимые.
Мне кажется, что проблема с библиотеками в том, что там всё друг за другом тянется. Надо две строчки кода, а приходится устанавливать по 10МБ классов Конечно понятно, что элегантней считается использовать Date из библиотеки XY, чем написать его самому, но это отражается на повторении эксперимента. Т.е если кто нибудь решит использовать мою библиотеку, он должен будет скачать себе полинтернета Рано или поздно все библиотеки разрастаются в таких монстров. Помоему только у борланда более-менее хорошее решение проблемы. Это компоненты. Их действительно можно реюзать. Это проблема не только Си++, но и практически всех оо-языков. Например вчера мне понадобился класс конвертирующий pdf в txt на java. Как вы думаете, сколько библиотек мне пришлось перекачать, чтобы запустить есго в первый раз? Всего 20 МБ в zip'е 60 МБ распаковано. (!!!!!!!!!!!!!!!!!!!!!) Что самое неприятное: 4 архива с разных мест интернета. Если бы сидел на модеме, не видать мне конвертора как своих ушей После чего я обнаружил, что надо впихать туда несколько дней работы, чтобы эта история заработала с моим классиком на три строчки, который собственно передаёт название pdf и txt |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |