Как научиться писать идиоматический код С++

Недавно я заставил себя изучить С++, и я только что закончил читать книгу С++: The Complete Reference, Герберт Шильдт. Мне понравилась книга и думаю, что я получил более или менее большую картину. Я заметил, что, когда я пытаюсь проверить с другими людьми то, что я использую, используя материал, который я узнал, они обычно считаются неидиоматическими и заменяются STL-способом сделать это, что безопаснее и проще (ну, t обложки библиотек STL и Boost).

Поэтому я хотел бы спросить: какие хорошие источники для изучения моделей хорошей программы на C++? Где я могу узнать основные шаблоны из "С++ way", чтобы делать что-то, а не просто повторять C-шаблоны на С++?

Меня особенно интересовали бы источники, которые включали STL и Boost.

Ответ 1

Вы можете проверить Окончательное руководство и список книг на С++

Для ваших целей я бы особенно рекомендовал:

Они не в определенном порядке, также вы можете читать и кодировать что-то между ними.

(Примечание: Как отметил @John Dibling, книга Boost может быть немного устаревшей, у меня нет опыта с этим самим)

Ответ 3

Лучший способ узнать, как писать идиоматический код на С++, это... написать код на С++ и просмотреть ваш код некоторым продвинутым разработчиком С++. Вы также должны прочитать некоторые из самых известных книг на С++ (Эффективный С++ от Scott Meyers - хороший старт, Modern С++ Design - плохая книга, чтобы научиться писать хороший код на С++, но это отличная книга, если вы хотите открыть и понять концепция общего программирования).

Вдобавок ко всему, вы должны прочитать много документов о STL и повысить и многому научиться об итераторах. Итераторы - это ключ к использованию STL (и ускорение реализации контейнеров и алгоритмов), и если вы не знаете, как их использовать, вы не будете писать идиоматический код С++. Когда-нибудь.

Ответ 4

Ускоренный С++ - это введение в С++, который использует STL с самого начала. Это не длинная книга, но она "плотная" и отличный выбор для кого-то в вашей ситуации ИМО. Мой опыт работы с С++ был похож на ваш, когда я его читал.

Ответ 5

Я бы (также) рекомендовал:


Естественно, что вы недовольны кодом других людей. Это типично для программирования - черт возьми, даже мой собственный код пять лет назад был написан общим числом n00b. Это может быть более четко сформулировано для С++, поскольку оно предназначено для разных стилей и часто создает свободу ( "вы можете" ) над гильдиями ( "так" ).

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


(Я помню несколько TheDailyWTF, где каждый мог бы услышать, насколько глупым и необоснованным это - все же где-то, похороненный среди меня тоже, был кто-то с опытом работы в домене, убедительно объясняющий, при каких обстоятельствах это было лучше, чем очевидное решение).