Стандарты программирования на С++
Стандарты программирования на C++101 правило и рекомендацияПредисловие
Как пользоваться этой книгой
Стандарты кодирования и вы
Об этой книге
Благодарности
Вопросы организации и стратегии
Примеры
Компилируйте без замечаний при максимальном уровне предупреждений
Обсуждение
Используйте автоматические системы сборки программ
Используйте систему контроля версий
Одна голова хорошо, а две — лучше
Стиль проектирования
Один объект — одна задача
Главное — корректность, простота и ясность
Кодирование с учетом масштабируемости
Не оптимизируйте преждевременно
Не пессимизируйте преждевременно
Минимизируйте глобальные и совместно используемые данные
Сокрытие информации
Кодирование параллельных вычислений
Ресурсы должны быть во владении объектов
Стиль кодирования
Предпочитайте ошибки компиляции и компоновки ошибкам времени выполнения
Активно используйте const
Избегайте макросов
Избегайте магических чисел
Объявляйте переменные как можно локальнее
Всегда инициализируйте переменные
Избегайте длинных функций и глубокой вложенности
Избегайте зависимостей инициализаций между единицами компиляции
Минимизируйте зависимости определений и избегайте циклических зависимостей
Исключения
Делайте заголовочные файлы самодостаточными
Используйте только внутреннюю, но не внешнюю защиту директивы #include
Функции и операторы
Передача параметров по значению, (интеллектуальному) указателю или ссылке
Сохраняйте естественную семантику перегруженных операторов
Отдавайте предпочтение каноническим
Предпочитайте канонический вид ++ и --, и вызов префиксных операторов
Используйте перегрузку, чтобы избежать неявного преобразования типов
Избегайте перегрузки , || и , (запятой)
Не пишите код, который зависит от порядка вычислений аргументов функции
Проектирование классов и наследование
Ясно представляйте, какой вид класса вы создаете
Предпочитайте минимальные классы монолитным
Предпочитайте композицию наследованию
Избегайте наследования от классов, которые не спроектированы для этой цели
Стандарты программирования на С++
Предпочитайте предоставление абстрактных интерфейсовОткрытое наследование означает
Обсуждение
Практикуйте безопасное перекрытие
Виртуальные функции стоит делать неоткрытыми, а открытые — невиртуальными
Избегайте возможностей неявного преобразования типов
Делайте данные-члены закрытыми (кроме случая агрегатов в стиле структур C)
Не допускайте вмешательства во внутренние дела
Разумно пользуйтесь идиомой Pimpl
Предпочитайте функции, которые не являются ни членами, ни друзьями
New и delete всегда должны разрабатываться вместе
При наличии пользовательского
Конструкторы, деструкторы и копирование
Определяйте и инициализируйте переменные-члены в одном порядке
В конструкторах предпочитайте инициализацию присваиванию
Избегайте вызовов виртуальных функций в конструкторах и деструкторах
Делайте деструкторы базовых
Деструкторы, функции освобождения ресурсов и обмена не ошибаются
Копируйте и ликвидируйте согласованно
Явно разрешайте или запрещайте копирование
Избегайте срезки. Подумайте
Предпочитайте канонический вид присваивания
Обеспечьте бессбойную функцию обмена
Пространства имен и модули
Храните типы и их свободный интерфейс в одном пространстве имен
Храните типы и функции в разных
Не используйте using для пространств
Избегайте выделения и освобождения памяти в разных модулях
Не определяйте в заголовочном файле объекты со связыванием
Не позволяйте исключениям пересекать границы модулей
Используйте достаточно переносимые типы в интерфейсах модулей
Шаблоны и обобщенность
Разумно сочетайте статический и динамический полиморфизм
Выполняйте настройку явно и преднамеренно
Не специализируйте шаблоны функций
Пишите максимально обобщенный код
Обработка ошибок и исключения
Широко применяйте assert для документирования внутренних допущений и инвариантов
Определите разумную стратегию обработки ошибок и строго ей следуйте
Отличайте ошибки от ситуаций, не являющихся ошибками
Стандарты программирования на С++
Проектируйте и пишите безопасный в отношении ошибок кодДля уведомления об ошибках следует использовать исключения
Генерируйте исключения по значению, перехватывайте — по ссылке
Уведомляйте об ошибках, обрабатывайте и преобразовывайте их там, где следует
Избегайте спецификаций исключений
STL: контейнеры
По умолчанию используйте vector
Вместо массивов используйте vector и string
Используйте vector (и string::c_str) для обмена данными с API на других языках
Храните в контейнерах только значения или интеллектуальные указатели
Предпочитайте push_back другим способам расширения последовательности
Предпочитайте операции с диапазонами операциям с отдельными элементами
Используйте подходящие идиомы
STL: алгоритмы
Используйте отладочную реализацию STL
Предпочитайте вызовы алгоритмов самостоятельно разрабатываемым циклам
Пользуйтесь правильным алгоритмом поиска
Пользуйтесь правильным алгоритмом сортировки
Делайте предикаты чистыми функциями
В качестве аргументов алгоритмов
Корректно пишите функциональные объекты
Безопасность типов
Избегайте явного выбора типов — используйте полиморфизм
Работайте с типами, а не с представлениями
Избегайте reinterpret_cast
Избегайте применения static_cast к указателям
Обсуждение
Ссылки
Избегайте преобразований, отменяющих const
Не используйте преобразование типов в стиле С
Не применяйте memcpy или memcmp к не-POD типам
Не используйте объединения для преобразований
Не используйте неизвестные аргументы (троеточия)
Не используйте недействительные объекты и небезопасные функции
Не рассматривайте массивы полиморфно
Список литературы
из Вопросы организации и стратегии
Стиль проектирования
Стиль кодирования
Функции и операторы
Проектирование классов и наследование
Конструкторы, деструкторы и копирование
Пространства имен и модули
Шаблоны и обобщенность
Обработка ошибок и исключения - 2
STL: Контейнеры
STL: алгоритмы
Безопасность типов
От издательского дома "Вильямс"
Предметный указатель
Механические торговые системы (МТС)
Как только человек придумывает торговую систему приносящую какой-то реальный доход, возникает мысль как бы это дело автоматизировать. Хорошо если у человека есть навыки программирования, тогда все проще. А вот если нет, а таких большинство? Тогда нужен софт который поможет решить вашу проблему.МТС в MetaStock
МТС в Omega Trade Station
Оптимизация МТС
Построение МТС
Принципы МТС
ПроектированиеМТС
Работаем c MetaStock и МТС
Разработка МТС
Роботы МТС
Основы тестирования программ
Торговля с Omega TradeStation
Азы С++
Энциклопедия C++ Builder
C++ вопросы программирования
C++ от Страуструпа
C++. Вводный курс
ООП на C++
Программирование на C++ с Qt4
Приложения созданные с С++ Builder
Введение в язык Си++
Программирование на Си и Си++
Читайте код на Си и Си++
Выражения Си, на Си++
Приложения на С++ в Visual Studio
Основы программирования на C#
Borland C++ Builder
C++ 3d.Комментарии
Справочник советов по C++Builder
Программирование на Borland C++
Создание VxD на Visual C++
Visual C++ FAQ
Доступ к данным в C++ Builder
Программы на C++ 5.02 и OWL 5.00
Работа с базами в C++ Builder
Краткий курс по rmDC++
Контроллеры автоматизации с C++
Интерпретатор GNU Bourne
C++.Бархатный путь
Справочное руководство по C++
Язык C++ для профессионалов
Учебник по Visual C++ .Net
Microsoft Visual C++ и MFC
Библиотека шаблонов STL
Описание Библиотеки Си
Программирование в С++ Builder 5
Основы программирования на C#
Руководство чайника по языку Си
Описание функций Си
Visual C для начинающих
ObjectARX, AutoCAD. Библиотеки
Системы МТС
Советники МТС
Софт для МТС
Тестирование МТС
Технический анализ и МТС
Торговля с МТС
Торговля с TradeStation в МТС
Эксперты и МТС
4 Borland C++ и его окружение
Технический анализ и МТС
Народный учебник по OpenGL
Cамоучитель по Visual Studio.Net
Турбо отладчик (Turbo Debugger) 3.0
Ключевые слова Borland C++
Стандарты программ на С++
Основы программирования на C
Введение в программирование на C#
Работа с компилятором С++ Builder 6
Язык программирования Си
C - статьи
Графика, мультимедиа на Visual C#
Язык Си - аргументы
Язык программирования C
Язык С в вопросах и ответах