Каковы хорошие стороны в плохо продуманных нестандартных библиотеках C ++? - PullRequest
2 голосов
/ 23 мая 2009

Пытаясь освоить C ++ (благодаря многолетнему опыту работы с C), я, очевидно, пытаюсь делать правильные вещи и использовать как можно больше стандартного.

Однако, в моих чтениях по этому вопросу я сталкиваюсь с большой критикой за стандартные вещи и хвалу за нестандартные вещи. Например, даже (я предполагаю) плохо продуманная библиотека MFC имеет функции, например, в своем классе CString, который некоторые люди считают достаточно полезным, чтобы заставить их продолжать использовать его, несмотря на то, что он (а) нестандартный и (б) что он (как я полагаю, из-за критики) имеет недостатки во многих важных отношениях.

Мой вопрос двоякий, тогда:

A. Какие плохо продуманные библиотеки содержат функции, которые, тем не менее, делают целесообразным их дальнейшее использование, что это за функции и что в них хорошего?

B. Существуют ли библиотеки «адаптера», которые упрощают и / или упрощают использование таких библиотек, например, обеспечение хороших интерфейсов, которые абстрагируют утечки ресурсов, адаптеры, которые переходят из интерфейса библиотеки не-STL в STL, и так далее

Как относительный новичок в StackOverflow, я не уверен на 100%, что этот вопрос достаточно актуален, поэтому прошу прощения заранее, если он слишком открытый.

Заранее спасибо

Ответы [ 4 ]

2 голосов
/ 23 мая 2009

IMO лучшее, что есть в MFC, это то, что исторически он был доступен до того, как стал доступен STL, и что-то было лучше, чем ничего.

MFC все еще хорош, если вы пишете код, совместимый с существующей кодовой базой MFC.

Кроме того, в MFC мало достоинств, за исключением того, что, возможно, он по-прежнему является одной из (если не самой) очевидной библиотекой классов C ++ для Windows.

2 голосов
/ 23 мая 2009

Мой личный гранж с ACE . Это было как-то наоборот - отличная идея, в то время больше ничего не было доступно для кроссплатформенной многопоточной и сетевой разработки на C ++, широкого развертывания, книг авторов библиотек и т. Д. Но реализация была ужасной, шаблоны использования были сложный, почти все полезные функции C ++ подавлены (или не существовали в то время). Я думаю, что одна эта библиотека ответственна за большую часть людей, думающих, что C ++ сложен и уродлив. Совсем недавно коллекция Boost начала догонять потоки, ipc и сетевые возможности, поэтому есть как минимум альтернатива. НО, учитывая все сказанное, я все еще думаю, что стоит быть знакомым с ACE, если вы находитесь в этом пространстве, поскольку, опять же, слишком много людей используют его, идеи хороши, и это может послужить отличным отрицательным примером для проектирования библиотеки.

1 голос
/ 23 мая 2009

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

Я думаю, что это баланс между выполнением работы и выполнением работы "правильно". Где-то посередине, вероятно, где большинство из нас в конечном итоге.

0 голосов
/ 23 мая 2009

CString не является стандартным, потому что, я думаю, MFC не является кроссплатформенным. std :: string () является стандартным, но если мы используем все стандартное, то почему MS разработала MFC?

...