67. Пишите максимально обобщенный код
67. Пишите максимально обобщенный код
Резюме
Используйте для реализации функциональности наиболее обобщенные и абстрактные средства.
Обсуждение
Когда вы пишете тот или иной код, используйте наиболее абстрактные средства, позволяющие решить поставленную задачу. Всегда думайте над тем, какие операции накладывают меньшее количество требований к интерфейсам, с которыми они работают. Такая привычка сделает ваш код более обобщенным, а следовательно, в большей степени повторно используемым и более приспособленным ко внесению изменений в его окружение.
И напротив, код, неоправданно привязанный к деталям, оказывается чрезмерно "жестким" и неспособным к повторному использованию.
• Используйте для сравнения итераторов != вместо <. Оператор != более общий и применим к большему классу объектов; оператор < требует упорядочения и может быть реализован только итераторами произвольного доступа. При использовании оператора != ваш код проще переносится для работы с другими типами итераторов, такими как одно- и двунаправленные итераторы.
• Лучше использовать итераторы, а не индексы. Многие контейнеры не поддерживают индексный доступ; например, контейнер list не в состоянии эффективно реализовать его. Однако все контейнеры поддерживают итераторы. Таким образом, итераторы обеспечивают большую обобщенность кода, и при необходимости они могут использоваться совместно с индексным доступом.
• Используйте empty() вместо size()==0. "Пуст/не пуст" — более примитивная концепция, чем "точный размер". Например, вы можете не знать размер потока, но всегда можете сказать о том, пуст он или нет; то же самое справедливо и для входных итераторов. Некоторые контейнеры, такие как list, реализуют empty более эффективно, чем size.
• Используйте наивысший класс иерархии, предоставляющий необходимую вам функциональность. При программировании с использованием динамических полиморфных классов не следует делать код зависимым от ненужных вам деталей и привязываться к определенным производным классам.
• Будьте корректны при использовании const (см. рекомендацию 15). Передача параметров const& накладывает меньше ограничений на вызывающий код, поскольку const& охватывает как константные, так и неконстантные объекты.
Исключения
В некоторых случаях применение индексов вместо итераторов позволяет компилятору лучше оптимизировать код. Однако перед тем как решиться на такой шаг, убедитесь, что вы действительно в нем нуждаетесь и что ваш компилятор действительно при этом лучше оптимизирует ваш код (см. рекомендацию 8).
Ссылки
[Koenig97] §12.7, §17-18 • [Meyers01] §4 • [Stroustrup00] §13, §17.1.1 • [Sutter04] §1, §5, §34
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Как играть в Minecraft максимально эффективно
Как играть в Minecraft максимально эффективно Не волнуйтесьВы умрете. Если только вы не играете в режиме Творческий (Creative), что-нибудь рано или поздно вас прикончит. Даже в режиме Мирный (Peaceful) вы можете упасть в бассейн с лавой. Однако это часть игры. Подготовьтесь
Пишите, Шура, пишите
Пишите, Шура, пишите Метки: темы блога, автор блога, маркетинг, пользовательский контентХороший маркетинг начинается с хорошего продукта. Блог компании – это тоже своего рода продукт, постоянно изменяемый автором. Складывается он из оформления, юзабилити и содержания.
19.5 Обобщенный формат URL
19.5 Обобщенный формат URL Обобщая вышесказанное, отметим, что:? URL начинается с указания используемого протокола доступа.? Для всех приложений, кроме сетевых новостей и электронной почты, далее следует разделитель ://.? Затем указывается имя хоста сервера.? Наконец
1.7. Максимально используйте бенчмаркинг
1.7. Максимально используйте бенчмаркинг Отрасль веб-разработок – это одна из самых открытых для копирования передового опыта, бенчмаркинга, сфера бизнеса. Скорость распространения и клонирования инноваций здесь может измеряться часами.Постоянно изучайте не только
Максимально полезные книги от издательства «Манн, Иванов и Фербер»
Максимально полезные книги от издательства «Манн, Иванов и Фербер» Об издательстве Как все начиналось Мы стартовали в июне 2005 года с двумя книгами. Первой стала «Клиенты на всю жизнь» Карла Сьюэлла, второй – «Маркетинг на 100 %: ремикс». «Доброжелатели» сразу же завертели
Максимально полезные книги от издательства «Манн, Иванов и Фербер»
Максимально полезные книги от издательства «Манн, Иванов и Фербер» Об издательстве Как все начиналосьМы стартовали в июне 2005 года с двумя книгами. Первой стала «Клиенты на всю жизнь» Карла Сьюэлла, второй – «Маркетинг на 100 %: ремикс». «Доброжелатели» сразу же завертели
Охват максимально возможной аудитории
Охват максимально возможной аудитории Ваш интернет-магазин должен ориентироваться на три категории клиентов, а не пытаться найти золотую середину Соответственно, будет как минимум три группы наценок – для бедных (бюджетная категория или для тех, кто хочет сэкономить),
Пишите для людей, а не для поисковых систем
Пишите для людей, а не для поисковых систем Осмелимся предположить, что Google и «Яндекс» вряд ли являются вашими покупателями. Скорее всего, ваша целевая аудитория – обычные люди. Поэтому не перенасыщайте описания товаров и другой контент тоннами ключевых слов с целью
Глава 2. Не пишите программу, когда можно записать макрос.
Глава 2. Не пишите программу, когда можно записать макрос. В этой главе ...~ Запись макросов - последовательностей команд, чтобы пользоваться ими снова и снова~ Запуск средства записи макросов~ Тонкости записи макросов: они должны работать так, как вы планировали~ Просмотр и
31. Не пишите код, который зависит от порядка вычислений аргументов функции
31. Не пишите код, который зависит от порядка вычислений аргументов функции РезюмеПорядок вычисления аргументов функции не определен, поэтому никогда не полагайтесь на то, что аргументы будут вычисляться в той или иной очередности.ОбсуждениеНа начальных этапах развития
71. Проектируйте и пишите безопасный в отношении ошибок код
71. Проектируйте и пишите безопасный в отношении ошибок код РезюмеВ каждой функции обеспечивайте наиболее строгую гарантию безопасности, какой только можно добиться без дополнительных затрат со стороны вызывающего кода, не требующего такого уровня гарантии. Всегда
89. Корректно пишите функциональные объекты
89. Корректно пишите функциональные объекты РезюмеРазрабатывайте функциональные объекты так, чтобы их копирование выполнялось как можно эффективнее. Там, где это возможно, делайте их максимально адаптируемыми путем наследования от unary_function или
5.11.1. Обобщенный список
5.11.1. Обобщенный список Наш класс ilist имеет серьезный недостаток: он может хранить элементы только целого типа. Если бы он мог содержать элементы любого типа – как встроенного, так и определенного пользователем, – то его область применения была бы гораздо шире.
Глава 9 Пишите письма
Глава 9 Пишите письма Иногда мне приходят такие электронные письма, что я готов порвать их на мелкие электроны! Б. Гейтс. Из личной переписки Краткое содержание• Электронный почтовый ящик• Почта Windows как она есть• Домашнее задание 9Путешествия по Интернету интересуют
Максимально заполняйте кадр
Максимально заполняйте кадр «Природа не терпит пустоты» — эта фраза применима и к фотографии. Ничем не заполненное поле кадра смотрится не очень привлекательно. Когда большую часть кадра занимает, например, однотонное безоблачное небо или море, это оправдано, если