Правила и примеры склонения мужских и женских имён, отчеств, фамилий.
Грамотная речь и письмо отличают людей, получивших хорошее образование, от неграмотных представителей человечества.
Знание правил родного языка однозначно поможет вам при обращении к людям по именам, отчествам, фамилиям.
Поговорим подробнее об особенностях их склонения для мужских и женских вариантов.
Правильное склонение фамилии мужского рода: правило, пример
школьник ищет в книге примеры правильного склонения фамилий
В зависимости от происхождения, наличия/отсутствия гласной на конце слова либо согласной букв фамилии мужского рода имеют ряд правил для склонения.
Глобально разделим их на 2 большие группы:
- меняющие окончания
- сохраняющиеся без изменений
К первой группе правил относятся:
- -ов, -ин для русских и заимствованных вариантов склоняются по классической схеме. Например
, работа Иванова, картина принадлежит Санину, жду Сидорова, говорить с Фонвизиным о Крысине. - Фамилии иностранцев на -ин, -ов в творительном падеже приобретают окончание -ом. Пример
: роль сыграна Чаплином, герой озвучен Грином. - Когда носитель фамилии русский и она происходит от русских омонимов, срабатывает правило с окончанием -ым в творительном падеже.
Пример
: от слова крона — идём с Крониным, от диалектного варианта чапля — катание с Чаплиным. - Неударные окончания -а, -я склоняются по общим правилам.
Например
, тетрадь Глобы, автомобиль Шегды, постановка Окуджавы. - Грузинские на -ия меняют окончания, например
, заслуги Берии. - -а ударное на конце фамилий славянского происхождения предполагают изменение окончаний, например
, с Квашей и Сковородой. - Твердая или мягкая согласная на конце фамилии превращаются в сочетания с гласными при склонении.
Например
, стихи Блока, интервью с Гафтом, передать Мицкевичу. - В форме прилагательного склоняется по общим правилам.
Например
, победы Лютого, поход к Толстому.
Ко второй группе правил относятся следующие:
- иностранные на -иа остаются без изменений,
- -а, -я ударные французского происхождения не склоняются, например, карета Дюма, письма о Золя,
- -ко на конце не склоняются,
- с окончаниями на -о, -у, -и, -е, -ю остаются без изменений при склонении,
- -ых на конце сохраняет фамилию неизменной при склонении.
Правильное склонение мужского имени: правило, пример
мудрая сова из мультфильма разъясняет правило склонения мужских имен
Мужские имена также бывают разного происхождения. Однако правила при их склонении одинаковы:
- при окончании имени на согласную твердую либо мягкую букву или на -й изменения происходят по общему принципу склонения существительных.
Ударение остается без изменений, но в однослоговых перемещается.
Примеры
: Александр — Александра — Александру, Петр — Петра — Петру, Тимофей — Тимофея — Тимофею. - -ия, -я, -ья, -ея аналогичны с особенностями склонения существительных с подобным окончанием.
Пример
: Илья — Ильи — Илье, Захария — Захарии — Захарию. - -а — изменение окончания соответствует правилу склонения обычных существительных с -а на конце.
Пример
: Никита — Никиты — Никите.
Поскольку в русском языке много иностранных слов и имён людей других национальностей, вторые в ряде случаев не подпадают под правила склонения и остаются неизменными. Это имена, заканчивающиеся на:
- гласные -ю, -у, -ы, -и, -э, -е, -о. Пример, Хосе, Айбу
- две гласные, кроме -ия, -ея. Пример, Франсуа, Качаа
Правильное склонение отчества мужского рода: правило, пример
ребенок школьного возраста просматривает на планшете правила и примеры склонения мужского отчества
Отметим ряд особенностей перед переходом к склонению мужских отчеств:
- Классические окончания, а именно -евич, -ович.
Пример, Александр- Александрович, Тимофей — Тимофеевич. - Добавление мягкого знака перед окончанием, если имя отца заканчивается на -ий, то есть -ьевич.
Пример, Валерий — Валерьевич. - Если имя отца заканчивается на -а, то в отчестве добавляется -ич. Пример, Лука — Лукич, Никита — Никитич.
Добавим таблицу с изменениями окончаний в мужских отчествах при склонении их по падежам:
таблица склонения мужских отчеств по падежам
Правильное склонение фамилии женского рода: правило, пример
стопка открытых книг с примерами правильного склонения женских фамилий
Женские фамилии имеют ряд отличий от мужских при склонении.
- С окончанием на -ина, -ова меняются по падежам. Например, у Шукшиной, для Ивановой.
- В зависимости от особенностей склонения мужских фамилий существует разница и для женских вариантов. Например, Смородина, Жемчужина. В этом случае склонение в женских вариантах — приезд Нади Смородины и Лины Жемчужины. Если мужские варианты Смородин и Жемчужин, то женские соответственно — прибытие Зои Смородиной и Кати Жемчужиной.
- Неударные -а и -я меняют окончание при склонении. Пример, Валентины Глобы, Катерине Окуджаве.
- Похожие на прилагательные изменяют окончание по принципу склонения прилагательных. Пример: Лены Великой, Татьяне Светлой.
Отсутствие склонений для фамилий:
- французского происхождения
- с окончанием на -ко, -о, -е, -и, -у, -ю, -ых а также на согласную букву
Правильное склонение женского имени: правило, пример
девочка в очках выглядывает из-за книг, в которых искала правила склонения женских имён
В целом женские имена изменяют свое окончание при склонении. Есть ряд правил, которые регулируют это:
- с окончанием на -а, кроме г, к, ц, х. Пример:
таблица склонения женских имен с окончанием на -а
- то же окончание после г, к, х и отдельно после ц
таблица склонения женских имен с окончанием на -а после г. к, х
таблица склонения женских имен с окончанием на -а после ц
- двусложные имена на -я, а также те, что имеют эту букву безударной, меняют свои окончания по падежам так:
таблица склонения женских имен, заканчивающихся на -я
- с окончанием на -ия, кроме двусложных. Пример ниже:
пример склонения женских имен на -ия в таблице
- с окончанием на мягкий знак и шипящие — меняются следующим образом:
таблицы склонения женских имен, имеющих окончание в именительном падеже на мягкий знак и шипящую букву
Исключения составляют ряд женских имён иностранного происхождения. Они зачастую не склоняются.
Примерами выступают те же имена, что были представлены в таблице выше, которые имеют шипящую букву на конце.
Правильное склонение отчества женского рода: правило, пример
уставший школьник за партой накрылся открытым учебником с правилами склонения отчества женского рода
Существуют ряд правил склонения женских отчеств в зависимости от их образования от мужских имён. А именно:
- имена с окончанием на неударное -а образуют отчества с -ична. Если последний слог мужского имени с ударением, то -инична. Пример: Никита — Нитична, Илья — Ильинична.
- Если в основе имена второго склонения с нулевым и окончанием на -ий, то в отчестве добавляются -овна, -евна. Пример: Евгений — Евгениевна, Владимир — Владимировна.
Вставляем для наглядности таблицу склонения женских отчеств:
таблица изменения окончаний в женских отчествах при склонении их по падежам
Итак, мы рассмотрели ряд правил для склонения фамилий, имён и отчеств для мужчин и женщин. А также изучили их на примерах.
Практикуйте правила, склоняя имена, отчества и фамилии своих родных. Тогда и все правила запомнятся вам быстрее.
Удачных занятий!
Видео: как склонять фамилии по падежам?
Из вопросов, поступивших в «Справочное бюро» «Грамоты.ру»:
- Здравствуйте, у меня фамилия Осса, ударение на О, мне в дипломе написали Оссе, и теперь я должна делать экспертизу, которая стоит бешеных денег, чтобы доказать, что фамилия не склоняется.
- Моя фамилия Погребняк. Это украинская фамилия, а они вроде как не склоняются. Некоторые люди склоняют мою фамилию, пишут Погребняка, Погребняку, Погребняком. Разве это возможно?
- Моя фамилия Ерошевич, она польского происхождения (это точно известно). Меня интересует такой вопрос: склоняется ли моя фамилия. Моему родственнику (мужского пола) выдали аттестат, в котором фамилия была просклонена. И с этим аттестатом его никуда не брали. Говорили, что фамилия не склоняется. Учителя тоже говорят, что не склоняется, а на вашем сайте написано, что склоняется. Я в замешательстве!
Подобные вопросы не редкость в «Справочном бюро» нашего портала. Чаще всего их задают в мае–июне и в самом начале сентября. Связано это, конечно же, с тем, что в конце учебного года выпускники школ и вузов получают аттестаты и дипломы, а в сентябре дети идут в школу и начинают подписывать тетради. В аттестате и дипломе обязательно будет написано, кому он выдан (т. е. фамилия в дательном падеже), а на обложке тетради – чья она (т. е. фамилия в родительном падеже). И в тех случаях, когда фамилия учащегося оканчивается не на -ов (-ев)
, -ин (-ын)
или —ский (-цкий)
(т. е. не относится к так называемым стандартным), почти всегда возникает вопрос: надо ли склонять фамилию и если да, то как именно склонять? Именно с ним носители языка обращаются за помощью к лингвистам. А вслед за этим вопросом нередко следует и другой: «Как доказать, что фамилия склоняется?» или «Как отстоять право на несклонение фамилии?». Вопрос «Склонять или не склонять фамилию?» нередко выходит за рамки языкового, вызывая ожесточенные споры и приводя к серьезным конфликтам.
Разумеется, подобные вопросы поступают не только от учащихся, их родителей и преподавателей, их задают в течение всего года, но пики обращений к лингвистам – именно в мае–июне и сентябре, в связи с обострением данной проблемы в школах и вузах. Это не случайно: ведь именно в учебном заведении у многих носителей языка происходит первая встреча со специалистом – учителем русского языка, и требование педагога изменять по падежам фамилию, которая в семье всегда считалась неизменяемой, удивляет, раздражает и вызывает отпор. Подобные же трудности испытывают офисные работники (секретари, делопроизводители), которые сталкиваются с категорическими требованиями руководства не склонять склоняемые фамилии.
Опыт работы нашего «Справочного бюро» показывает, что законы склонения фамилий действительно неизвестны большому числу носителей языка (и даже некоторым филологам), хотя они приводятся во многих справочных пособиях по русскому языку, в том числе широкодоступных. В числе этих пособий – «Справочник по правописанию и литературной правке» Д. Э. Розенталя, стилистический словарь вариантов Л. К. Граудиной, В. А. Ицковича, Л. П. Катлинской «Грамматическая правильность русской речи» (3-е издание – под заголовком «Словарь грамматических вариантов русского языка»), «Словарь русских личных имен» А. В. Суперанской, исследование Л. П. Калакуцкой «Фамилии. Имена. Отчества. Написание и их склонение» и многие другие источники. Исследование запросов интернет-пользователей и мониторинг блогосферы позволяют сделать вывод: среди носителей языка распространено немало заблуждений относительно правил склонения фамилий. Вот главные из них: решающим фактором является языковое происхождение фамилии («не склоняются фамилии грузинские, армянские, польские и т. д.»); во всех случаях склонение фамилии зависит от пола носителя; фамилии, совпадающие с нарицательными существительными (Гроза, Жук, Палка
), не склоняются. Немалое число носителей языка убеждены, что правил склонения фамилий так много, что запомнить их не представляется возможным.
Чтобы показать, что все эти представления не соответствуют действительности, приведем основные правила склонения фамилий. Они взяты из перечисленных выше источников и сформулированы нами в виде пошаговой инструкции, своего рода алгоритма, с помощью которого можно быстро найти ответ на вопрос: «Склоняется ли фамилия?».
Вот этот алгоритм.
1.
Как сказано выше, склонение фамилий, оканчивающихся на -ов (-ев,), -ин (-ын), -ский (-цкий),
т. е. так называемых стандартных фамилий, не вызывает трудностей у носителей языка. Нужно только помнить два важных правила.
А. Заимствованные фамилии на -ов, -ин
, которые принадлежат иностранцам
, в форме творительного падежа имеют окончание -ом
(как существительные второго школьного склонения, например стол, столом
): теория предложена Дарвином, фильм снят Чаплином, книга написана Кронином.
(Интересно, что так же склоняется псевдоним Грин
, принадлежащий русскому писателю: книга написана
Грином.
)
Омонимичные русские фамилии имеют окончание —ым
в форме творительного падежа: с Чаплиным
(от диалектного слова чапля
«цапля»), с Крониным
(от крона
).
Б. Женские фамилии на —ина
типа Смородина, Жемчужина
склоняются двояко, в зависимости от склонения мужской фамилии (Ирины Жемчужины
и Ирины Жемчужиной
, Зои Смородины
и Зои Смородиной
). Если мужская фамилия – Жемчужин
, то правильно: приезд
Ирины Жемчужиной
. Если же мужская фамилия – Жемчужина
, то правильно: приезд
Ирины Жемчужины
(фамилия склоняется как нарицательное существительное жемчужина
).
2.
Теперь переходим непосредственно к так называемым нестандартным фамилиям. Первое, что нужно помнить: вопреки распространенному заблуждению, пол носителя фамилии далеко не всегда влияет на склоняемость/несклоняемость. Еще реже на это влияет происхождение фамилии. В первую очередь имеет значение, на какой звук оканчивается фамилия – согласный или гласный
.
3.
Сразу опишем несколько групп несклоняемых фамилий. В современном русском литературном языке не склоняются
русские фамилии, оканчивающиеся на -ых, -их
(типа Черных, Долгих
), а также все фамилии, оканчивающиеся на гласные е, и, о, у, ы, э, ю
.
Примеры: тетради Ирины Черных, Лидии Мейе, Романа Грымау; диплом выдан Виктору Долгих, Андрею Гретри, Николаю Штаненко, Майе Ли; встреча с Николаем Кручёных и Александром Минадзе.
Примечание. В разговорной речи и в языке художественной литературы, отражающем устную речь, считается допустимым склонение мужских фамилий на —ых, -их
(в сценарии Черныха, встреча с Рыжихом)
, а также склонение фамилий украинского происхождения на -ко, -енко
по склонению существительных женского рода на -а: пойти к Семашке, в гостях у Устименки.
Отметим, что украинские фамилии такого типа последовательно склонялись в художественной литературе XIX века (у Шевченки; исповедь Наливайки; стихотворение, посвященное Родзянке
).
4.
Если фамилия оканчивается на согласный
(кроме фамилий на -ых, -их
, о которых говорилось выше), то здесь – и только здесь!– имеет значение пол носителя фамилии. Все мужские фамилии, оканчивающиеся на согласный, склоняются – это закон русской грамматики
. Все женские фамилии, оканчивающиеся на согласный, не склоняются. При этом языковое происхождение фамилии не имеет значения. Склоняются в том числе и мужские фамилии, совпадающие с нарицательными существительными.
Примеры: тетрадь Михаила Бока, дипломы выданы Александру Кругу и Константину Королю, встреча с Игорем Шипелевичем, в гостях у Андрея Мартынюка, дочь Ильи Скалозуба, работа Исаака Акопяна; тетрадь Анны Бок, дипломы выданы Наталье Круг и Лидии Король, встреча с Юлией Шипелевич, в гостях у Екатерины Мартынюк, дочь Светланы Скалозуб, работа Марины Акопян.
Примечание 1. Мужские фамилии восточнославянского происхождения, имеющие беглую гласную при склонении, могут склоняться двояким образом – с потерей и без потери гласного: Михаила Заяца
и Михаила Зайца, с Александром Журавелем
и Александром Журавлём, Игорю Грицевецу
и Игорю Грицевцу.
В ряде источников предпочтительным признается склонение без выпадения гласного (т. е. Заяца, Журавелем, Грицевецу
), т. к. фамилии выполняют в том числе юридическую функцию. Но окончательный выбор – за носителем фамилии. При этом важно придерживаться выбранного типа склонения во всех документах.
Примечание 2. Отдельно необходимо сказать о фамилиях, оканчивающихся на согласный й.
Если ему предшествует гласный и
(реже – о
), фамилия может склоняться двояко. Такие фамилии, как Топчий, Побожий, Бокий, Рудой
,
можно воспринять как имеющие окончания -ий, -ой
и склонять как прилагательные (Топчего, Топчему
, в женском роде Топчая, Топчей
), а можно – как имеющие нулевое окончание со склонением по образцу существительных (Топчия, Топчию
, в женском роде неизменяемая форма Топчий
). Если согласному й
на конце фамилии предшествует любой другой гласный, фамилия подчиняется общим правилам (Игорю Шахраю, Николаю Аджубею,
но Инне Шахрай, Александре Аджубей
).
5.
Если фамилия оканчивается на гласный -я, которому предшествует другой гласный
(напр: Шенгелая, Ломая, Рея, Берия, Данелия
), она склоняется
.
Примеры: тетрадь Инны Шенгелаи, диплом выдан Николаю Ломае, встреча с Анной Реей; преступления Лаврентия Берии, встреча с Георгием Данелией.
6.
Если фамилия оканчивается на гласный -а, которому предшествует другой гласный
(напр.: Галуа, Моруа, Делакруа, Моравиа, Эриа, Эредиа, Гулиа
), она не склоняется.
Примеры: тетрадь Николая Галуа, диплом выдан Ирине Эриа, встреча с Игорем Гулиа.
7.
И последняя группа фамилий – оканчивающиеся на -а, -я, которым предшествует согласный
. Здесь – и только здесь! – имеет значение происхождение фамилии и место ударения в ней. При этом нужно запомнить всего два исключения:
А. Не склоняются
французские фамилии с ударением на последний слог: книги Александра Дюма, Эмиля Золя и Анны Гавальда, афоризмы Жака Деррида, голы Диарра и Дрогба.
Б. Преимущественно не склоняются
финские фамилии, оканчивающиеся на —а
неударное: встреча с Мауно Пеккала
(хотя в ряде источников рекомендуется склонять и их).
Все остальные фамилии (славянские, восточные и другие; оканчивающиеся на ударный и безударный -а, -я
) склоняются
. Вопреки распространенному заблуждению, склоняются в том числе и фамилии, совпадающие с нарицательными существительными.
Примеры: тетрадь Ирины Грозы, диплом выдан Николаю Мухе, лекция Елены Кара-Мурзы, песни Булата Окуджавы, роли Игоря Кваши, фильмы Акиры Куросавы.
Примечание. В склонении японских фамилий раньше наблюдались колебания, но справочные пособия отмечают, что в последнее время такие фамилии последовательно склоняются, а в «Грамматическом словаре русского языка» А. А. Зализняка несклоняемый вариант у Акутагава,
наряду с несклоняемым у Окуджава
,
назван «грубым нарушением нормы».
Вот, собственно, и все главные правила; как видно, их не так уж много. Теперь мы можем опровергнуть перечисленные выше заблуждения, связанные со склонением фамилий. Итак, вопреки расхожему мнению: а) не существует правила «не склоняются все армянские, грузинские, польские и т. д. фамилии» – склонение фамилий подчиняется законам грамматики языка, и, если конечный элемент фамилии поддается русскому словоизменению, она склоняется; б) правило «мужские фамилии склоняются, женские нет» относится не ко всем фамилиям, а только к тем, которые оканчиваются на согласный; в) совпадение фамилии по форме с нарицательными существительными не является препятствием для их склонения.
Важно помнить: фамилия – это слово
и, как и все слова, оно должно подчиняться грамматическим законам языка. В этом смысле нет разницы между предложениями Аттестат выдан Голод Ивану
(вместо правильного Голоду Ивану
) и Жители деревни страдали от голод
(вместо страдали от голода
), в обоих предложениях – грамматическая ошибка.
Следовать правилам склонения фамилий важно еще и потому, что отказ от изменения по падежам склоняемой фамилии может привести к недоразумениям и казусам, дезориентировать адресата речи. В самом деле, представим себе ситуацию: человек с фамилией Гроза
подписал свою работу: статья Николая Гроза.
По законам русской грамматики мужская фамилия, оканчивающаяся в родительном падеже ед. числа на —а
, восстанавливается в исходной форме, в именительном падеже, с нулевым окончанием, поэтому читатель сделает однозначный вывод: автора зовут Николай Гроз.
Сданная в деканат работа А. Погребняк
приведет к поискам студентки (Анны? Антонины? Алисы?) Погребняк, а принадлежность к ней студента Александра Погребняка еще надо будет доказать. Соблюдать правила склонения фамилий нужно по той же причине, по которой необходимо соблюдать правила правописания, в противном случае возникает ситуация, аналогичная знаменитой «оптеке», описанной Л. Успенским в «Слове о словах». Авторы «Словаря грамматических вариантов русского языка» Л. К. Граудина, В. А. Ицкович, Л. П. Катлинская указывают: «Для словоизменения фамилий непреложным должен быть закон об абсолютной выводимости им. падежа фамилии из ее косвенных падежей».
Поэтому предлагаем вам запомнить азбучную истину № 8.
Азбучная истина № 8
. Склонение фамилий подчиняется законам грамматики русского языка. Не существует правила «не склоняются все армянские, грузинские, польские и т. д. фамилии». Склонение фамилии зависит в первую очередь от того, на какой звук оканчивается фамилия – согласный или гласный. Правило «мужские фамилии склоняются, женские нет» относится не ко всем фамилиям, а только к тем, которые оканчиваются на согласный
. Совпадение фамилии по форме с нарицательными существительными (Муха, Заяц, Палка
и т. д.) не является препятствием для их склонения.
Литература:
- Агеенко Ф. Л. Словарь собственных имен русского языка. М., 2010.
- Граудина Л. К., Ицкович В. А., Катлинская Л. П. Словарь грамматических вариантов русского языка. –3-е изд., стер. М., 2008.
- Зализняк А. А. Грамматический словарь русского языка. – 5-е изд., испр. М., 2008.
- Калакуцкая Л. П. Фамилии. Имена. Отчества. Написание и склонение. М., 1994.
- Розенталь Д. Э. Справочник по правописанию и литературной правке. – 8-е изд., испр. и доп. М., 2003.
- Суперанская А. В. Словарь русских личных имен. М., 2004.
В. М. Пахомов,
кандидат филологических наук,
главный редактор портала «Грамота.ру»
Имена и названия
Как склонять фамилии (трудные случаи)
Источник:
Н. А. Еськова. Трудности словоизменения существительных. Учебно-методические материалы к практическим занятиям по курсу «Язык современной печати». Госкомитет печати СССР. Всесоюзный институт повышения квалификации работников печати. М., 1990.
13.0. Данному вопросу посвящена книга Л. П. Калакуцкой «Склонение фамилий и личных имен в русском литературном языке». М., 1984. Это фундаментальное исследование, основанное на богатом материале. В настоящем разделе кратко рассматриваются лишь основные вопросы, причем внимание акцентируется на самых сложных и спорных. Фамилии и имена рассмотрены отдельно.
13.1. Склонение фамилий
13.1.1. Подавляющее большинство русских фамилий имеет формальные показатели — суффиксы -ов- (-ев-), -ин-, -ск-: Лермонтов, Тургенев, Пушкин, Достоевский, Крамской.
Все такие фамилии склоняются. При этом они образуют две соотносительные системы форм — мужского и женского рода, называющие соответственно лиц мужского и женского пола. С обеими системами соотносится единая система форм множественного числа.
Примечание.
Все это — за исключением отсутствия форм среднего рода — напоминает систему форм прилагательного. Абсолютная регулярность в соотношении
мужских и женских фамилий, не имеющая аналогий среди нарицательных существительных, наводит на мысль, не следует ли считать фамилии особым типом «родоизменяемых» существительных.
13.1.2. Фамилии с формальным показателем -ск-
склоняются в мужском и женском роде и во множественном числе как прилагательные: Достоевский, Достоевского, Достоевскому…, Достоевская, Достоевской…, Достоевские, Достоевских
и т. д.
Русские фамилии, склоняющиеся как прилагательные и не имеющие показателя -ск-,
относительно немногочисленны; к ним относятся: Благой, Толстой, Боровой, Береговой, Лановой, Броневой,Дикий, Гладкий, Поперечный
и т. п. (см. перечень таких фамилий в книге: А. В. Суперанская, А. В. Суслова. Современные русские фамилии. М., 1981. С. 120-122).
13.1.3. Фамилии с показателями -ов-
и -ин-
имеют в мужском роде особое склонение, не встречающееся ни среди личных имен, ни среди нарицательных существительных. В нем объединены окончания существительных второго склонения мужского рода и прилагательных типа отцов.
От склонения указанных существительных склонение фамилий отличается окончанием творительного падежа (ср.: Кольцов-ым, Никитин-ым — остров-ом, кувшин-ом),
от склонения притяжательных прилагательных — окончанием предложного падежа (ср.: о Грибоедов-е, о Карамзин-е — об отцов-ом, о мамин-ом).
Соотносительные женские фамилии склоняются как притяжательные прилагательные в форме женского рода (ср. как склоняются Ростова
и отцова, Каренина
и мамина).
То же надо сказать о склонении фамилий на -ов
и -ин
во множественном числе (Базаровы, Рудины
склоняются как отцовы, мамины).
13.1.4. Все прочие мужские фамилии, имеющие основы на согласные и нулевое окончание в именительном падеже (на письме они кончаются согласной буквой, ь
или й),
кроме фамилий на -ых, -их,
склоняются как существительные второго склонения мужского рода, т. е. имеют в творительном падеже окончание -ом, (-ем): Герценом, Левитаном, Гоголем, Врубелем, Хемингуэем, Гайдаем.
Такие фамилии воспринимаются как «нерусские».
Соотносительные женские фамилии не склоняются: Наталии Александровны Герцен, Любови Дмитриевне Блок, с Анной Магдалиной Бах, с Надеждой Ивановной Забелой-Врубель, о Мэри Хемингуэй, о Зое Гайдай.
Примечание.
Применение этого правила требует знания пола носителя фамилии. Отсутствие таких сведений ставит пишущего в затруднительное положение.
Форма, в которой стоит фамилия, информирует о поле соответствующего лица. Но если автор текста не имел нужных сведений, был нетверд в применении грамматического правила или просто небрежен, читающий получает ложную информацию. Приведем один пример. В еженедельнике «Говорит и показывает Москва» в программах радио на 9.3.84 фигурировала такая передача: «Поет Э. Матис. В программе песни В. Моцарта, К. Шумана,
И. Брамса, Р. Штрауса». Кто такой К. Шуман? Можно предположить, что неверно указан инициал: К. Вместо Р. Но, оказывается, в передаче исполнялись песни Клары Шуман
(жены Роберта Шумана, которая была не только пианисткой, но и композитором). Так грамматическая ошибка дезориентирует читателя.
Во множественном числе фамилии рассматриваемого типа тоже склоняются как существительные мужского рода: побывал у Герценов, у Врубелей, у Гайдаев, написал Блокам, Хемингуэям
и т. п.
Примечание.
Есть, однако, особые правила постановки таких фамилий в одних случаях в склоняемой форме множественного числа, в других — в несклоняемой форме. Правила эти, более относящиеся к синтаксису, чем к морфологии, довольно подробно разработаны у Д. Э. Розенталя (см.: Справочник по правописанию и литературной правке. М., 1989. С. 191-192, §149, п. 10). В соответствии с этими правилами рекомендуется: с Томасом и Генрихом Маннами,
но с Робертом и Кларой Шуман, у отца и сына Ойстрахов,
но у отца и дочери Гилельс.
Здесь этот материал не рассматривается.
13.1.5. Заложенное в предыдущем пункте несложное правило склонения фамилий на согласные, не имеющих формальных показателей -ин-, -ов-,
оказывается трудноприменимым для некоторых «диковинных» фамилий, например, для тех, которые омонимичны нарицательным существительным или географическим названиям, склоняющимся по третьему склонению. Так, в грамматическом приложении к «Справочнику личных имен народов РСФСР» отмечаются затруднения, возникающие при необходимости просклонять такие фамилии, как Грусть, Любовь, Астрахань.
В этом же пособии констатируется, что для некоторых фамилий с трудностями связано только образование множественного числа (фамилии Ус, Гей, Палец, Полоз, Сон
и др.).
Склонение ряда фамилий (как в единственном, так и во множественном числе) оказывается затруднительным из-за неясности, должна ли в них сохраняться беглость гласных по образцу омонимичных им или похожих по внешнему виду нарицательных существительных (Кравеца
или Кравца —
от Кравец, Журавеля
или Журавля —
от Журавель, Мазурока
или Мазурка —
от Мазурок
и т. п.).
Разрешение таких затруднений не может быть обеспечено правилами, для этого необходим словарь фамилий, дающий нормативные рекомендации для каждого слова.
13.1.6. Особый тип представляют собой русские фамилии на -ых (-их),
выдающие свое происхождение от формы родительного (и предложного) падежа множественного числа прилагательных: Белых, Черных, Крученых, Кудреватых, Долгих, Рыжих.
По строгим нормам литературного языка такие фамилии не склоняются: лекции Черных, роман Седых, творчество Крученых
и т. п.
Примечание.
В непринужденной разговорной речи существует тенденция склонять такие фамилии, когда они принадлежат мужчинам, действующая тем сильнее, чем ближе общение с носителем фамилии. Так, в ныне не существующем Московском городском педагогическом институте им. Потемкина студенты сороковых-пятидесятых годов слушали лекции Черныха,
сдавали экзамены и зачеты Черныху
и т.п. (сказать иначе никому не приходило в голову). Если бы эта разговорная тенденция победила, фамилии на -ых, -их
перестали бы отличаться от прочих фамилий на согласные, о которых говорилось в п. 13.1.4.
13.1.7. Есть случаи, когда исходная форма фамилии может быть воспринята неоднозначно с точки зрения ее морфологического устройства. Случаи эти немногочисленны, но интересны и лингвистически, и с точки зрения практических трудностей, которые могут быть с ними связаны.
Существует проблема разграничения «русских» и «нерусских» фамилий на -ов
и -ин
; к последним относятся, например, Флотов
(немецкий композитор), Гуцков
(немецкий писатель), Кронин
(английский писатель), Дарвин, Франклин
и т. п. С морфологической точки зрения «русскость» или «нерусскость» выражается в том, выделяется или не выделяется в фамилии формальный показатель (-ов-
или -ин-
).
Если такой показатель выделяется, то творительный падеж имеет окончание -ым,
а соотносительная женская фамилия склоняется (Фонвизиным, Фонвизиной),
если же не выделяется — творительный падеж образуется с окончанием -ом,
а женская фамилия не склоняется (Вирховом, с Анной Вирхов).
Ср. «омонимы»: Чарльзом Спенсером Чаплином, у Ханны Чаплин
и Николаем Павловичем Чаплиным, с Верой Чаплиной.
Примечание.
Как показывает материал Л. П. Калакуцкой, в некоторых случаях соотносительные мужские и женские фамилии оформляются морфологически противоречиво (например, творительный падеж Цейтлиным
может сочетаться с несклоняемой формой Цейтлин
женской фамилии). Полное упорядочение здесь может быть достигнуто только при наличии специального словаря фамилий, содержащего грамматические указания. Однако редактор должен следить, чтобы морфологически противоречащие друг другу формы не встретились хотя бы в пределах одного текста.
Есть нерусские (преимущественно немецкие) фамилии на -их: Аргерих, Дитрих, Фрейндлих, Эрлих
и т. п. Независимо от свойственного им налета «иноязычности» их нельзя принять за русские фамилии на -их
потому, что в русских фамилиях перед элементом -их
практически не встречаются мягкие согласные, имеющие твердые пары, поскольку в русском мало прилагательных с такими основами (т.е. таких прилагательных, как синий;
и есть ли фамилия Синих
и подобные ей?).
Но если конечному -их
фамилии предшествует шипящая или задненебная согласная, ее принадлежность к несклоняемому типу будет несомненна только при соотнесенности с основой прилагательного (например, Ходячих., Гладких)
; при отсутствии же этого условия такие фамилии могут восприниматься морфологически неоднозначно; к ним относятся, например, Хасхачих, Товчих, Грицких.
При всей редкости таких случаев, следует иметь в виду эту принципиальную возможность.
В очень редких случаях могут быть восприняты неоднозначно фамилии, исходные формы которых кончаются йотом (на письме й)
с предшествующими гласными и
или о
. Например, такие фамилии, как Топчий, Побожий, Бокий, Рудой
можно воспринять и как имеющие окончания -ий, -ой
и, следовательно склоняющиеся как прилагательные (Топчего, Топчему…,
в женском роде Топчая, Топчей)
и как имеющие нулевое окончание со склонением по образцу существительных (Топчия, Топчию…,
в женском роде неизменяемая форма Топчий).
Для разрешения подобных недоумений опять — таки необходим словарь фамилий.
13.1.8. Склонение фамилий, оканчивающихся в исходной форме на гласные, не зависит от того, мужские они или женские.
Примечание.
Материал Л. П. Калакуцкой показывает, что существует тенденция распространять соотношение, закономерное для фамилий на согласные, на фамилии с конечным а
, т.е. склонять мужские фамилии, не склоняя женские. Редакторам следует всячески способствовать изживанию этой практики.
Рассмотрим фамилии на гласные, исходя из их буквенного облика.
13.1.9. Фамилии, пишущиеся с е, э, и, ы, у, ю
на конце, могут быть только несклоняемыми. Таковы фамилии: Доде, Мюссе, Лансере, Фурье, Мейе, Шабрие, Гёте, Нобиле, Караджале, Тарле, Орджоникидзе, Артмане, Мегрэ, Боссюэ, Гретри, Люлли, Дебюсси, Навои, Модильяни, Грамши, Голсуорси, Шелли, Руставели, Чабукиани, Ганди, Джусойты, Неедлы, Лану, Амаду, Шоу, Манцу, Неру, Энеску, Камю, Корню
и т. п.
13.1.10. Фамилии с конечным о
тоже несклоняемы; таковы фамилии Гюго, Клемансо, Ларошфуко, Мийо, Пикассо, Марло, Шамиссо, Карузо, Леонкавалло, Лонгфелло, Ремесло, Доливо, Дурново, Хитрово, Бураго, Мертваго.
По строгим нормам литературного языка это распространяется и на фамилии украинского происхождения с конечным -ко
(среди которых много на -енко): Короленко, Макаренко, Франко, Квитко, Шепитько, Бондарсо, Семашко, Горбатко, Громыко.
Примечание.
Известно, что в литературном языке прошлого века такие фамилии могли склоняться по первому склонению: Короленки, Короленке, Короленкой. Теперь это не считается нормативным.
13.1.11. Наиболее сложную картину представляют собой фамилии с конечным а.
В отличие от предыдущих случаев, здесь существенное значение имеет, следует ли а
после гласной или после согласной, падает ли на эту гласную ударение и (в определенных случаях) какого происхождения фамилия.
Все фамилии, кончающиеся на а,
которому предшествуют гласные (чаще всего у
или и),
несклоняемы: Галуа, Моруа, Делакруа, Моравиа, Эриа, Эредиа, Гулиа.
Все фамилии, кончающиеся на неударное а
после согласных, склоняются по первому склонению: Рибера — Риберы, Рибере, Риберу, Риберой, Сенека — Сенеки
и т.д.; так же склоняются Кафка, Спиноза, Сметана, Петрарка, Куросава, Глинка, Дейнека, Гулыга, Олеша, Нагнибеда, Окуджава
и др. Все такие фамилии, независимо от происхождения, являются морфологически членимыми в русском языке, т. е. в них выделяется окончание -а.
Среди фамилий с ударным á
после согласных есть как морфологически членимые, так и нечленимые, т. е. несклоняемые.
Несклоняемы фамилии французского происхождения: Дюма, Тома, Дега, Люка, Ферма, Гамарра, Петипа
и др.
Фамилии иного происхождения (славянские, из восточных языков) склоняются по первому склонению, т. е. в них вычленяется ударное окончание -а: Митта — Митты, Митте, Митту, Миттой;
сюда относятся: Сковорода, Кочерга, Кваша, Цадаса, Хамза
и др.
13.1.12. Склоняемость-несклоняемость фамилий, пишущихся с буквой я
на конце, зависит только от места ударения и происхождения фамилии.
Несклоняемы фамилии французского происхождения с ударением на конце: Золя, Труайя.
Все прочие фамилии на я
склоняемы; таковы Головня, Зозуля, Сырокомля, Гамалея, Гойя, Шенгелая, Данелия, Берия.
Примечание.
Фамилии, у которых конечной букве я
предшествует гласная буква, в отличие от таких фамилий на а, членятся на основу, кончающуюся согласной йот, и окончание -а (Гамалея — Гамале»j-а).
Грузинские фамилии оказываются склоняемыми или несклоняемыми в зависимости от того, в каком виде конкретная фамилия заимствована русским языком: фамилии на -ия
склоняемы (Данелия),
на -иа —
несклоняемы (Гулиа).
13.1.13. Представляет интерес вопрос об образовании множественного числа от склоняемых фамилий на -а (-я).
В грамматическом приложении к «Справочнику личных имен народов РСФСР» такие фамилии квалифицированы как нестандартные и для них рекомендуется в качестве нормы употребление во множественном числе для всех падежей формы, совладающей с исходной. В качестве образцов взяты фамилии Зима
и Зоя.
Рекомендуется: Ивана Петровича Зимы, с Семеном Семеновичем Зоей, Анне Ивановне Зиме, Елену Сергеевну Зою
и т. п., а для множественного числа — формы Зима, Зоя
во всех падежах.
Представить себе склонение во множественном числе фамилий Зима, Зоя
действительно трудно. Но как обстоит дело с другими фамилиями, склоняющимися по первому склонению, например, такими, как Глинка, Дейнека, Гулыга, Окуджава, Олеша, Зозуля, Гамалея?
Есть ли уверенность, что для них следует рекомендовать употребление во всех падежах множественного числа формы, совпадающей с исходной? Как следует сказать: своим любимым Глинка
или своим любимым Глинкам?; встретился с Дейнека
или встретился с Дейнеками?; вспомнил обо всех Окуджава
или вспомнил обо всех Окуджавах?
Употребление склоняемых форм в этих случаях не исключается.
Труднее представить себе склонение во множественном числе фамилий с ударным окончанием -á — Шульга, Митта, Хамза,
в особенности — в родительном падеже (у всех *Шульг, *Митт, *Хамз?).
Здесь мы сталкиваемся с языковой трудностью (см. выше, 7.6.). Поскольку подобные факты редки, лингвистами не изучены, редактору в таких случаях целесообразно минимально вмешиваться в авторский текст.
13.2. Склонение личных имен
13.2.1. Личные имена не имеют существенных морфологических отличий от нарицательных существительных. Они не «родоизменяемы» (ясно, что случаи типа Александр
и Александра, Евгений
и Евгения, Валерий
и Валерия
к этому явлению не относятся). Среди личных имен нет и слов с особым склонением (ср. сказанное выше о фамилиях на -ов
и -ин).
Единственная особенность личных имен — отсутствие среди них слов среднего рода, но надо отметить, что и среди нарицательных существительных одушевленных средний род представлен очень мало.
13.2.2. Среди личных имен есть существительное третьего склонения. Это тоже черта, сближающая их морфологически с нарицательными существительными и отличающая от фамилий. По третьему склонению устойчиво склоняются: Любовь
(с формами Любови,
о Любови), Адель, Жизель
и имена библейского происхождения Агарь, Рахиль, Руфь, Суламифь, Эсфирь, Юдифь.
Прочие имена такого типа — Люсиль, Сесиль, Айгюль, Газель
(заимствования из разных языков), Нинель
(новообразование советской эпохи), Ассоль
(придуманное имя) -колеблются между третьим склонением и несклоняемостью (у Сесили
и у Сесиль, с Нинелью
и с Нинель).
Примечание.
Женские фамилии на мягкие согласные (на письме на ь), как
ясно из сказанного выше (см. 13.1.4), так же несклоняемы, как и женские фамилии на твердые согласные. Принципиально существующая возможность параллельного изменения существительных на мягкие согласные по двум разным склонениям для грамматического выражения различий по полу остается в русском языке не реализованной. Ср. теоретически возможные соотношения: Врубеля, Врубелю, Врубелем
(склонение мужской фамилии) — *Врубели, *Врубелью
(склонение женской фамилии), *рыся, *рысю, *рысем
(склонение названия самца) -рыси, рысью
(склонение названия самки). Впрочем, в знаменитой фольклорной Лебеди
эта возможность отчасти реализуется!
13.2.3. Женские имена на твердые согласные, могут быть только несклоняемыми, (не отличаясь от фамилий такого рода). К ним относятся: Элизабет, Ирен, Катрин, Гретхен, Лив, Сольвейг, Марлен, Жаклин
и т.п. Нарицательные существительные такого типа есть, но они немногочисленны и практически непополняемы (мадам, мисс, миссис, мистрис, фрейлейн, фрекен),
личных же имен много и пополнение их (путем заимствования) ничем не ограничено.
13.2.4. Мужские имена на твердые и мягкие согласные (на письме на согласные буквы, и
и ь),
склоняются как нарицательные существительные такого же внешнего вида. К ним относятся Иван, Константин, Макар, Артур, Роберт, Эрнст, Клод, Ричард, Андрей, Василий, Юлий, Амадей, Игорь, Эмиль, Шарль
и т. п. В редких случаях «омонимии» мужских и женских имен они соотносятся (с точки зрения склонения) как мужская и женская фамилии: Мишель, Мишеля
(мужское имя), Мишель,
несклоняемое (женское имя; есть французская скрипачка Мишель Оклер).
13.2.5. Все, сказанное о склоняемости-несклоняемости фамилий на гласные, относится и к личным именам.
Не склоняются имена: Рене, Роже, Оноре, Хосе, Дитте, Озе, Панталоне, Анри, Луи, Лизи, Бетси, Джованни, Мери, Этери, Гиви, Пьеро, Лео, Амадео, Ромео, Карло, Ласло, Бруно, Гуго, Данко, Франсуа, Нана, Атала, Коломба
и т. п.
Склоняются имена: Франсуаза, Джульетта, Сюзанна, Абдулла, Мирза, Муса, Каста, Эмилия, Офелия, Джамиля
и т. п.
13.2.6. Множественное число от склоняемых личных имен образуется свободно, если в этом: возникает необходимость: Иваны, Игори, Эмили,
Елены, Эмилии
и т. п. Морфологические ограничения здесь возникают в тех же случаях, что и для нарицательных существительных (например, для родительного множественного от Абдулла, Мирза, Коста;
ср. 7.6). О вариантном образовании родительного множественного от имен типа Петя, Валя, Сережа
см. 7.4.4, примечание.
13.3 Особенности образования косвенных, падежей от некоторых сочетаний имен и фамилий
В русском языке сложилась традиция употреблять фамилии ряда иностранных деятелей (преимущественно писателей) в сочетании с именами: Вальтер Скотт, Жюль Верн, Майн Рид, Конан Дойль, Брет Гарт, Оскар Уальд, Ромен Роллан;
ср. также литературные персонажи: Робин Гуд, Шерлок Холмс, Нат Пинкертон.
Употребление этих фамилий отдельно, без имен мало распространено (в особенности это касается односложных фамилий; вряд ли кто-нибудь читал в детстве Верна, Рида, Дойля
и Скотта!).
Следствием такого тесного единства имени и фамилии оказывается склонение в косвенных падежах только фамилии: Вальтер Скотта, Жюль Верну, с Майн Ридом, о Робин Гуде
и т.п. Это явление, характерное для непринужденной устной речи, находит отражение и на письме, что можно подтвердить следующими примерами из достаточно авторитетных авторов.
Себя казать, как чудный зверь,
В Петрополь едет он теперь /…/
С ужасной книжкою Гизота,
С тетрадью злых карикатур,
С романом новым Вальтер-Скотта…
(Пушкин. Граф Нулин)
И встает
живьем
страна Фенимора
Купера
и Майн-Рида.
(Маяковский. Мексика)
По вечерам быстроглазая Серна
Ване и Ляле читает Жюль Верна.
(Чуковский. Крокодил)
(Написания через дефис подчеркивают тесное единство имени и фамилии).
Несклонение имени в таких сочетаниях осуждается современными нормативными пособиями. Так, у Д. Э. Розенталя сказано: «… романы Жюля Верна
(не: «Жюль Верна»)…» (Указ. соч. С. 189. §149, п. 2).
Ветер свистнул у Вовы над ухом
И сомбреро сорвал с головы!
Волны-горы бегут друг за другом,
Скачут, словно гривастые львы.
Вот с шипеньем одна накатила —
И Жюля Верна
с кормы подхватила!
(Волгина Т. По тропинкам бродит лето. Киев. 1968. С. 38-39).
Такая правка в стихах, конечно, совершенно недопустима. Но и в прозаическом тексте, передающем непринужденную разговорную речь, нет необходимости заменять Жюль Верна, Майн Рида, Брет Гарта, Конан Дойля
и т. п. строго нормативными сочетаниями со склоняемыми формами имен. Редактору следует в подобных случаях проявлять гибкость.
Мужские фамилии, имеющие окончание на ударные и безударные
звуки — о, — е, — э, — ц, — у, — ю, а так же на окончание
звука – а, со стоящей впереди гласной — не склоняются,
например: произведение Даниэла Дефо, обзор литературы С.С.
Курного, улица имени Гастелло.
Не склоняются русские мужские фамилии, имеющие окончание на
слоги — их, — ых, например: под руководством Седых,
упражнялся с Ковчих, сказано П. П. Новослободских. В русском
языке и художественной литературе допустимо склонение
мужских фамилий имеющих окончание на слоги – их, — ых,
например: в произведении Репныха, лекции Зелемныха.
Большинство, можно даже сказать подавляющее большинство
русских мужских фамилий имеющих суффиксы — ев — (- ов -),
— ск -, — ин -: Золотов, Куленев, Мушкин, Залесский,
Приморский, Костолевский, Крамской, Волонской. Абсолютно все
подобные мужские фамилии склоняются.
Русских мужских фамилий, склоняющихся по принципу имен
прилагательных, и не имеющих показателя существует очень
мало; к ним относятся такие фамилии как: Столбовой, Толстой,
Береговой, Лановой, Теневой, Сладкий, Заречный, Поперечный,
Коломный, Белый, Грозный, и т. д…
Склонение мужских фамилий (по принципу имен прилагательных)
И. п.: Андрей Белый, Сергей Сладкий, Иван Лановой, Алексей
Заречный.
Р. п.: Андрея Белого, Сергея Сладкого, Ивана Ланового,
Алексея Заречного.
Д. п.: Андрею Белому, Сергею Сладкому, Ивану Лановому,
Алексею Заречному.
В. п.: Андрея Белого, Сергея Сладкого, Ивана Ланового,
Алексея Заречного.
Т. п.: с Андреем Белым, с Сергеем Сладким, с Иваном Лановым,
с Алексеем Заречным.
П. п.: об Андрее Белом, о Сергее Сладком, об Иване Лановом,
об Алексее Заречном.
Мужские фамилии с окончаниями — ин — и — ов — имеют
особенное склонение, не встречающееся среди нарицательных
существительных и среди личных имен. Здесь мы видим
объединение окончания имен прилагательных и имен
существительных второго склонения мужского рода и
подразделения типа отцов, праотцов. От склонения подобных
имен существительных склонение мужских фамилий отличается
главным образом окончанием творительного падежа, например:
Сизов-ым, Акунин-ым — Боров-ом, Стон-ом, Калугин – ым,
Суворов – ым от склонения по принципу притяжательных
прилагательных имеет отличие окончание предложного падежа,
например: о Сазонов-е, о Кулибин-е — об праотцов-ом, о
мамин-ом. То же самое относится к склонению мужских фамилий
оканчивающихся на — ов и — ин во множественном числе (Сизовы,
Акунины склоняются как праотцовы, мамины). Для склонения
подобных мужских фамилий, целесообразно обратиться к
справочнику склонения имен и фамилий.
Не склоняются русские мужские фамилии, с окончаниями на
слоги: — ово, — аго, — яго, имеющие происхождение по образу
застывших форм родительного падежа в единственном числе: (Бурново,
Слухово, Живаго, Шарбинаго, Деряго, Хитрово), и с
окончаниями на слоги: — их, — ых — множественного числа
(Крученых, Костровских, Дольских, Довгих, Черных), где
некоторые из них склоняется в просторечии (Дурново —
Дурновому).
Обязательно нужно склонять по родам и падежам мужские
фамилии, имеющие окончание на мягкий знак и согласный звук.
(институт имени С. Я. Жука, поэзия Адама Мицкевича,
проводить Игоря Коваля).
Если в окончании фамилии перед звуком — а присутствует
согласная, то окончаниями фамилий по форме падежей будут:
звуки — а, — ы, — е, — у, — ой, — е.
Если в окончании мужской фамилии перед звуком — а стоит одна
из букв (г, к, х) или же мягкая шипящая (ч, щ) или ж, то
окончанием фамилии в форме родительного падежа будет звук —
и.
Если в окончании мужской фамилии перед звуком — а стоит одна
из шипящих (ч, щ, ц, ш) или ж, то окончанием фамилии по
форме творительного падежа при ударении на окончание слова
будет — ой, и — ей.
Фамилия как название семьи предполагает наличие формы
множественного числа: Ивановы, Пашкины, Веденские. Если
люди, вступающие в брак, берут общую фамилию, она пишется во
множественном числе: Васильевы, Вронские, Усатые, Горбатые,
Любимые. Нестандартные мужские фамилии, кроме фамилий
образованных в форме имен прилагательных, в написании в
официальных документах форм множественного числа не имеют.
Поэтому пишут: Мария Петровна и Николай Семенович Вишня,
супруги Парус, муж и жена Сызрань, брат и сестра Астрахань.
Несмотря на трудности, возникающих при склонении русских и
иноязычных мужских фамилий, существующих в русском языке,
все же желательно правильно склонять имя отчество и фамилию
человека, если они поддаются склонению. Действующая в
правилах русского языка система правил падежных окончаний в
русском языке, достаточно жестко предлагает принимать
оставшееся без склонения склоняемое слово как стоящее не в
том падеже или относящееся не к тому роду, к которому оно в
данном случае действительности относится. Например, Иван
Петрович Зима, в родительном падеже должно быть Ивана
Петровича Зимы. Если будет написано: для Ивана Петровича
Зима, это значит, что в именительном падеже эта фамилия
будет выглядеть как Зим, а не Зима. Оставленные без
склонения мужские фамилии типа Ветер, Немешай будут приняты
за женские, потому что подобные фамилии у мужчин склоняются:
с Василием Сергеевичем Немешаем, от Виктора Павловича Ветра.
Для склонения подобных мужских фамилий, целесообразно
обратиться к справочнику склонения имен и фамилий.
Ниже приводятся некоторые образцы склонений мужских фамилий
существующих в русском языке:
Склонение мужских фамилий (стандартных)
Единственное число
И. Смирнов, Крамской, Костиков, Елисеев, Иванов,
Р. Смирнова, Крамского, Костикова, Елисеева, Иванова,
Д. Смирнову, Крамскому, Костикову, Елисееву, Иванову,
В. Смирнова, Крамского, Костикова, Елисеева, Иванова,
Т. Смирновым, Крамским, Костиковым, Елисеевым, Ивановым,
П. о Смирнове, о Крамском, о Костикове, о Елисееве, об
Иванове.
Множественное число
И. Смирновы, Крамские, Костиковы, Елисеевы, Ивановы,
Р. Смирновых, Крамских, Костиковых, Елисеевых, Ивановых,
Д. Смирновым, Крамским, Костиковым, Елисеевым, Ивановым,
В. Смирновых, Крамских, Костиковых, Елисеевых, Ивановых,
Т. Смирновыми, Крамскими, Костиковыми, Елисеевыми,
Ивановыми,
П. о Смирновых, о Крамских, о Костиковых, о Елисеевых, об
Ивановых.
В русских мужских фамилиях из двух слов всегда склоняется ее
первая часть, если она употребляется как фамилия (поэзия
Лебедева-Кумача, работа Немировича-Данченко, экспозиция
Соколова-Скаля)
За исключением тех фамилий, где первая часть не означает
фамилию, такие мужские фамилии ни когда не склоняются,
например: рассказы Мамина-Сибиряка, живопись Соколова,
скульптура Демут-Малиновского, исследования Грем-Бржимайло,
в роли Поздник-Трухановского
Не стандартные мужские фамилии с окончанием на звуки — а
(-я), такие как Зима, Лоза, Зоя, Дора рекомендуется
употреблять во множественном числе исключительно для всех
падежей формы, совпадающей с исходным видом фамилии.
Например: Ивана Петровича Зимы, Василию Ивановичу Лозе, с
Семеном Семеновичем Зоей, а для множественного числа — формы
Зима, Лоза, Зоя во всех падежах. Для склонения подобных
мужских фамилий, целесообразно обратиться к справочнику
склонения имен и фамилий.
Просклонять во множественном числе мужские фамилии Зима, Зоя
трудно.
Есть проблема разделения на «русские» и «нерусские» фамилии
с окончанием на слоги — ов и — ин; К таким мужским фамилиям
относятся, например: Гуцков (немецкий писатель), Флотов
(немецкий композитор), Кронин (английский писатель),
Франклин, Гудвин, Дарвин и т. п. С точки зрения морфологии «нерусскость»
или «русскость» мужской фамилии определяется в том,
выражается или не выражается в фамилии окончание на (-ов —
или — ин -). Если такой показатель выражается, то фамилия в
творительном падеже будет иметь окончание — ым
Нерусские мужские фамилии, относящиеся при их упоминании к
двум или нескольким лицам, в некоторых случаях ставятся во
множественном числе, в других – в единственном, а именно:
если фамилия состоит из двух мужских имен, то такая фамилия
ставится в форме множественного числа, например: Джильберт и
Жан Пикары, Томас и Генрих Манны, Михаил и Адольф Готлибы;
отец и сын Ойрстархи;
Есть так же нерусские (в основном немецкие) фамилии с
окончанием на — их: Фрейндлих, Аргерих, Эрлих, Дитрих и т.
п. Такие фамилии невозможно назвать русскими фамилиями с
окончанием на — их потому, что в русских фамилиях перед
окончанием — их практически не встречаются мягкие согласные,
имеющие твердые пары, так как в русском языке очень мало
имен прилагательных с такими основами (т.е. подобных имен
прилагательных, как красный, седой; и есть ли фамилии
Красных, Седых и подобные).
Но, если перед окончанием – их в мужской фамилии стоит
шипящая или задненебная согласная, такие мужские фамилии,
как правило, не склоняются, только при соотношении имени
прилагательного (например, Кодячих., Сладких); при
отсутствии, же этого условия подобные фамилии обычно
воспринимаются неоднозначно с точки зрения морфологии; к
таким фамилиям относятся, например: Вальщих, Хаскачих,
Трубацких, Ловчих, Стоцких. При всей редкости таких случаев,
следует не забывать эту принципиальную возможность.
В незначительно редких случаях неоднозначно воспринимаются
фамилии, исходные формы которых заканчиваются на букву — й
перед гласными и или — о. Допустим, такие фамилии, как
Лопчий, Набожий, Допчий, Боркий, Зоркий, Дудой можно понять
и как имеющие окончания на слоги — ий, — ой. Такие мужские
фамилии склоняются по правилам имен прилагательных: Лопчего,
Лопчему, Набожий, Набожьему, Допчий, Допчему, Боркий,
Боркому, Зоркий, Зоркому, и как имеющие нулевое окончание со
склонением по образцу имен существительных (Лопчия, Лопчию…,)
Для прояснения подобных недоумений необходимо обращаться к
словарю фамилий.
Мужские фамилии, окачивающиеся на звуки — е, — э, — и, — ы,
— у, — ю, не склоняются. Например, такие: Доде, Дюссе,
Мансере, Фурье, Лейе, Дабрие, Гёте, Нобиле, Мараджале,
Тарле, Орджоникидзе, Мэгрэ, Артмане, Боссюэ, Гретри,
Девюсси, Навои, Ставильяни, Модильяни, Гуарэ, Грамши,
Сальери, Голсуорси, Шелли, Неедлы, Руставели, Каманду,
Чабуркиани, Ганди, Джусойты, Ланду, Амаду, Шоу, Манцу,
Курандэ, Неру, Колню, Эндеску, Камю, Колню и т. п.
Иноязычные мужские фамилии, имеющие окончание на гласный
звук, исключая безударные — а, — я (Гюго, Доде, Бизе,
Россини, Муссалини, Шоу, Неру, Гете, Бруно, Дюма, Золя),
имеющие окончания на звуки — а, — я, с впереди стоящим
гласным — и (стихи Гарсия, сонеты Эредия, рассказы Гулиа) не
склоняются. Исключение может быть в просторечии. Несклоняемы
мужские фамилии французского происхождения, оканчивающиеся
на ударную — я: Золя, Бруайя.
Все остальные мужские фамилии имеющие окончание на — я
склоняемы; например Головня, Заборня, Берия, Зозуля,
Данелия, Сырокомля, Шенгелая, Гамалея, Гойя.
Когда склоняются иностранные мужские фамилии и используются
формы правил русских склонений, основные особенности
склонения таких слов в языке самого подлинника не
сохраняются. (Карел Чапек — Карела Чапека [ни в коем случае
Карла Чапека]). Также и в польских именах (у Владека, у
Эдека, у Янека [не: у Владка, у Эдка, у Янка]).
Наиболее сложную картину в склонении представляют собой
мужские фамилии имеющие окончание на звук — а. В отличие от
ранее рассмотренных случаев, здесь большое значение имеет,
окончание — а стоит после гласной или после согласной, и
если это гласная, то падает ли на эту гласную ударение и (в
определенных случаях) какое происхождение имеет данная
мужская фамилия.
Все мужские фамилии, с окончанием на звук — а, стоящие после
гласных (чаще всего у или и), не склоняются: Балуа, Доруа,
Делакруа, Боравиа, Эдриа, Эсредиа, Булиа.
Не склоняются мужские фамилии, имеющие французское
происхождение с окончанием ударного звука — я: Золя, Труайя,
Белакруйя, Добля, Голля и т.д.
Все мужские фамилии, с окончанием на неударное — а после
согласных, склоняются по правилу первого склонения,
например: Дидера — Дидеры, Дидере, Дидеру, Дидерой, Сенека —
Сенеки, Сенеке, Сенеку, Сенекой, и т.п.; по такому же
принципу склоняются Кафка, Петрарка, Спиноза, Сметана,
Куросава, Гулыга, Глинка, Дейнека, Олеша, Загнибеда,
Окуджава и др.
Склонение мужских фамилий (в единственном, и во
множественном числе) из-за того что не ясно, должна ли в них
сохраняться беглая гласная по образцу похожих по внешнему
виду нарицательных имен существительных, склонение бывает
затруднительным (Травеца или Травца — от Травец, Муравеля
или Муравля — от Муравель, Лазурока или Лазурка — от Лазурок
и т. п.).
Что бы избежать затруднений, лучше воспользоваться
справочником. Если мужская фамилия сопровождается женским и
мужским именами, то она остается в форме единственного
числа, например: Франклин и Элеонора Рузвельт, Жан и Эсланда
Родсон, Август и Каролина Шнегель, сподвижники Рихарда
Зорге, Дик и Анна Краузен, Ариадна и Стив Тур; также Сергей
и Валя Брузжак, Станислав и Нина Жук;
В единственном числе пишется и говорится также мужская
фамилия, если она сопровождается двумя нарицательными
существительными, разного пола, например: господин и госпожа
Рэйнер, лорд и леди Гамильтон; но если при таких сочетаниях
как муж и жена или брат и сестра фамилия чаще всего
употребляется в форме множественного числа: муж и жена
Будстремы, брат и сестра Виринги;
При слове супруги фамилия представляется в форме
единственного числа, например: супруги Дент, супруги
Торндайк, супруги Лоддак;
При слове братья, мужская фамилия тоже обычно представляется
в форме единственного числа, например: братья Гримм, братья
Требель, братья Гелленберг, братья Вокрасс; При слове семья,
фамилия обычно представляется в форме единственного числа,
например: семья Доппфенгейм, семья Грамалей.
В сочетаниях русских фамилий с именами числительными в
склонении используются такие формы: два Иванова, оба
Иванова, двое Ивановых, оба брата Ивановы, два друга
Ивановы; двое (оба) Перовских. Под это правило подводятся
также сочетания имен числительных с иноязычными фамилиями;
оба Шлегеля, два брата Манны.
Склонение мужские фамилий восточнославянского происхождения,
имеющие беглую гласную при склонении, такие мужские фамилии
могут образоваться двумя способами – с потерей и без потери
гласной при склонении: Заяц – Заяца – Заяцем и Зайца –
Зайцем. Необходимо учитывать, что при заполнении юридических
документов такие мужские фамилии нужно склонять без потери
гласного.
Мужские фамилии западнославянского и западноевропейского
происхождения, при склонении, имеющие беглую гласную,
склоняются без потери гласной: улица Слашека, романы Чапека,
в исполнении Готта, лекции Завранека. Мужские фамилии,
являющиеся по форме именами прилагательными (с ударной или
безударной на окончании) склоняются так же, как, и имена
прилагательные. Склоняются славянские мужские фамилии,
оканчивающиеся на ударные звуки — а, — я (у режиссера
Майбороды, с психологом Сковородой, к сценаристу Головне).
Мужские фамилии славянского происхождения на — о типа Севко,
Дарко, Павло, Петро склоняются по правилам склонения имен
существительных мужского и среднего рода, например: впереди
Севка, у Дарка. Склоняются, как правило, мужские фамилии с
окончанием на неударные звуки — а, — я (очерк В. М. Птицы,
искусство Яна Неруды, романсы в исполнении Роситы Кинтаны,
сеанс с А.Вайдой, песни Окуджавы). Незначительные колебания
наблюдаются в склонении грузинских и японских мужских
фамилий, где встречаются эпизоды, как склоняемости, так и
несклоняемости фамилий:
Награждение народного артиста СССР Харавы; 120 лет со дня
рождения Сен-Секатаямы, киноленты Куросавы; труды А. С.
Чикобава (и Чикобавы); творчество Пшавела; в резиденции
Икэда; отчет Хатояма; ленты Витторио де Сика (не де Сики).
Славянские мужские фамилии с окончанием на — и, — ы
рекомендуется склонять по образцу русских мужских фамилий с
окончанием на — ий, — ый (Добровски — Добровского, Покорны —
Покорного). При этом допускается оформление подобных мужских
фамилий по образцу русских и по правилу именительного падежа
(Добровский, Покорный, Дер-Стравинский). Мужские фамилии, у
которых ударное окончание – а склоняются по правилам первого
склонения, то есть в них исчезает ударное окончание — а:
Питта — Питты, Питте, Питту, Питтой; сюда относятся так же:
Сковорода, Пара, Кочерга, Кваша, Цадаса, Мырза, Хамза и
другие.
Чешские и польские мужские фамилии на – цкий, – ский, и –
ый, – ий, следует склонять с полными окончаниями в
именительном падеже, например: Огинский – Огинскому,
Пандовского – Пандовскому.
Украинские мужские фамилии с окончанием на — ко (-енко), как
правило, склоняются по различному типу склонения только в
художественной литературе или в разговорной речи, но не в
юридических документах, например: команда голове Евтуху
Макогоненку; покоился убитый Кукубенком шляхтич,
стихотворенье, посвящённое Родзянке; Не склоняются мужские
фамилии, с окончанием, как на ударное, так и безударное
окончание — ко (Боровко, Дятько, Гранко, Загорудько,
Кириенко, Янко, юбилей Левченко, деятельность Макаренко,
произведения Короленко), где некоторые из них склоняется в
разговорной речи, (Боровко Боровки́, письмо В. Г.
Короленко – письмо В. Г. Короленке). Или: «Под вечер
Беликов… направился к Коваленкам». Не склоняются мужские
фамилии на — ко с ударением на последнюю – о, например:
театр имени Франкó, наследие Божкó.
В сложных составных из нескольких слов фамилиях китайских,
корейских, вьетнамских склоняется последняя часть фамилии,
оканчивающаяся на согласный звук, например: речь Ди Вэна,
заявление Пам Зан Гонга, беседа с Е Ду Сингом.
Грузинские мужские фамилии могут быть склоняемыми или
несклоняемыми в зависимости от того, в каком виде конкретная
фамилия заимствована русским языком: фамилии с окончанием на
— ия склоняемы (Данелия, Горнелия), с окончанием на — иа —
несклоняемы (Гулиа).
Следует особо обратить внимание на то, что в обычном
общении, если носитель редкой или трудно склоняемой фамилии
допускает неправильное произношение своей фамилии, это не
считается грубым нарушением общих правил склонения. Но в
заполнении юридических документов, публикациях СМИ и
художественных произведениях, при неуверенности в правильном
склонении рекомендуется обращаться к справочнику фамилий,
иначе можно попасть в неприятное положение, несущее за собой
ряд неудобств, потерю времени для доказательства
подлинности, принадлежности именно того человека о котором
писалось в данном документе.
Добрый день, уважаемый студент! Сегодня я хотела бы затронуть очень важную тему, моим студентам она очень пригодилась, т.к. фамилии и имена в русском языке чаще всего употребляются в речи, особенно у тех,кто работает или учится. Итак, в русском языке фамилии обычно имеют следующие суффиксы:
Ов (Круглов
)
-ев (Тургенев
)
-ин (Путин
)
-ск (Ржевск
ий)
Просклоняем для примера фамилию с суффиксом -ов
И.п. кто? Смирнов
Р.п. кого? Смирнова
Д.п. кому? Смирнову
В.п. кого? Смирнова
Т.п. кем? Смирновым
П.п. о ком? О Смирнове
Если говорить про имена и отчества, нужно отметить,что тут тоже есть свои нюансы:
Например, имена мужские, которые относятся ко 2 склонению — Александр, Владимир, Евгений, образуют отчества при помощи суффикса — ович, а для женского отчества — овна.
Александрович
/Александровна
Если добавить к имени суффиксы — евич/евна, то мы получим следующие отчества:
Евгеньевич
/Евгеньевна
Но, пожалуйста, обратите внимание,что мужские отчества, которые образованы от имён, оканчивающихся на -ий (Валерий, Евгений), меняют окончание на -ь, например:
Валерьевич, Евгеньевич
Мужские имена, которые относятся к 1 склонению (например, Никита) образуют отчества путём прибавления суффикса -ич для мужского отчества:
Никитич
А у женских отчеств добавляется -ична:
Никитична
Обратите внимание
, что если ударение в мужском имени падает на последний слог (Илья, Лука, Фома), то женские отчества образуются путем добавления суффикса -инична: Ильинична
— от мужского имени Илья΄ (ударение падает на последний слог). Если же вы хотите правильно просклонять отчества по падежам, то здесь происходит добавление или замена определенных окончаний, например, давайте просклоняем отчества Ильич (мужского рода) и Львовна (женского рода):
И.п. кто? Ильич (мужского рода) Львовна (женского рода)
Р.п. кого? Ильича
Львовны
Д.п. кому? Ильичу
Львовне
В.п. кого? Ильича
Львовны
Т.п. кем? Ильичом
Львовной
П.п. о ком? Об Ильиче
о Львовне
Мужские имена, которые оканчиваются на любой согласный (мы знаем,что согласные бывают твердые и мягкие) и на букву -й-, то склоняются они таким же образом, как обычные существительные мужского рода, например:
Иван (кто), Ивана(кого), Ивану (кому) и так далее.
Очень важно помнить, что ударение сохраняется на том же месте (гласном), что и в именительном падеже. Но и здесь имеются исключения
: два русских имени Лев и Пётр, в них ударения падают на окончания других падежей, например,
Петра
(кого? Родительный падеж), Петру
(кому? Дательный падеж), Петром
(кем? Творительный падеж)
А в имени Лев при склонении по падежам выпадает гласная и меняется на -ь:
Ль
ва-Ль
ву-Ль
вом
Иногда возникают вопросы, когда перед нами оказывается имя, которое состоит из 2-х частей и пишется через дефис, как быть с ними и как склонять? Ничего сложного в этом нет, просто необходимо запомнить, что склоняется только последняя часть такого имени, первая остается без изменений, например:
Сент-Луис
Р.п. кого? Сент -Луиса
Д.п. кому? Сент- Луису
В.п. кого? Сент- Луиса
Т.п. кем? Сент-Луисом
П.п. о ком? О Сент-Луисе
Имена, не зависимо от рода — мужского и женского, которые оканчиваются на букву -а, склоняются как остальные существительные в русском языке: Вера-Веры-Вере и т.д.
Мужские и женские имена, оканчивающиеся на -я,-ья,-ия,-ея будут склоняться как существительные с соответствующими окончаниями: Мария-Марии-Марией.
Часть 1. Вступление
…
Часть 6. Специфика Google
Часть 7. Ещё возможности C++
Часть 8. Именование
…
Это последняя переведённая часть руководства Google по стилю в C++.
Спасибо за замечания и комментарии к переводу.
Надеюсь это руководство будет полезным подспорьем для программистов на C++.
Исходная статья (fork на github), обновляемый перевод.
И ещё здесь много букв.
Ещё возможности C++
Rvalue-ссылки
Используйте rvalue-ссылки:
- Для объявления конструкторов перемещения и операторов перемещения.
- Для объявления перегружаемых функций с const& и && аргументами если это обеспечит значительное улучшение производительности против передачи по значению или если пишется код с небольшими накладными расходами или поддержкой произвольных типов. Избегайте увеличения количества перегружаемых функций (обычно бывает, когда комбинируются типы для несколько параметров).
- Для поддержки ‘perfect forwarding’ в ‘универсальном’ коде.
Определение
Rvalue-ссылка является ссылочным типом, привязанным к временному объекту. По синтаксису похожа на обычную ссылку. Например, void f(std::string&& s); объявляет функцию с аргументом rvalue-ссылка на std::string.
Когда суффикс ‘&&’ (без дополнительных квалификаторов) используется с шаблонным аргументом функции, то применяются специальные правила определения типа аргумента. И такая ссылка имеет название forwarding reference.
За
- Определение конструктора перемещения (принимающего rvalue-ссылку на тип класса) даёт возможность переместить (move) класс вместо его копирования. Например, если v1 это std::vector<std::string>, то код auto v2(std::move(v1)) скорее всего выполнит несколько операций с указателями вместо копирования большого объёма данных. И в большинстве случаев это приведёт к существенному увеличению производительности кода.
- Rvalue-ссылки позволяют реализовать типы, которые можно перемещать, а не копировать. Это полезно для типов, которые нельзя копировать, но которые хочется передавать в функцию как аргумент, хранить в контейнере и т.д.
- Функция std::move необходима для эффективного использования некоторых типов стандартной библиотеки, таких как std::unique_ptr.
- Forwarding references, использующие объявление rvalue-ссылки, позволяют написать единую обёртку, перемещающую аргумент в другую функцию. И это одинаково работает вне зависимости от того, временный объект или нет, константный он или не очень. Это и называется ‘perfect forwarding’.
Против
- Rvalue-ссылки не все хорошо понимают. Особенности, наподобие схлопывания ссылок или специальных правил определения типа, всё сильно усложняют.
- Rvalue-ссылки часто используют неправильно, т.к. они интуитивно нелогичны: обычно ожидается, что аргумент будет иметь валидное состояние после вызова функции (и операции перемещения выполняться не будут).
Вердикт
Вы можете использовать rvalue-ссылки чтобы объявить конструктор перемещения и перемещающий оператор присваивания (как описано в Копируемые и перемещаемые типы). См. также C++ Primer для более подробной информации о семантике перемещения и, также, std::move.
Вы можете использовать rvalue-ссылки чтобы объявить пары перегружаемых функций, одна с Foo&&, другая с const Foo&. Обычно программисты предпочитают передавать аргументы по значению. Однако использование пары функций может дать лучшую производительность, или позволит в обобщённом коде поддержать большое количество типов. И не забывайте: если ради производительности пишется более сложный код, проверьте и убедитесь, что это действительно помогает.
Вы можете использовать ‘forwarding references’ вместе с std::forward
, чтобы реализовать ‘perfect forwarding’.
Дружественные сущности
В ряде случаев допустимо использовать классы и функции как friend.
Дружественные типы обычно определяются в том же файле, поэтому нет необходимости открывать другой файл, чтобы разобраться с использованием закрытых членов класса. Обычное использование friend: когда класс FooBuilder объявляется дружественным (friend) классу Foo, так что FooBuilder может корректно настроить внутреннее состояние Foo без необходимости открывать это состояние всем остальным. В ряде случаев удобно сделать класс unit-тестов дружественным исходному классу.
Дружественность расширяет (но не ломает) инкапсуляцию класса. В ряде случаев, когда требуется дать доступ к внутреннему состоянию только одному классу, лучше объявить его как friend, чем делать дополнительные открытые члены класса. Однако, в остальном классы должны взаимодействовать только через открытые функции.
Исключения (программные)
Мы НЕ используем исключения C++.
За
- Исключения позволяют обрабатывать ситуации типа «это невозможно» не в месте возникновения ошибки, а на более верхнем уровне, позже. И всё это без копания в исходниках и составления таблиц с кодами ошибок.
- Исключения используются в большинстве современных языков программирования и их использование в C++ позволяет писать код, концептуально схожий с Python, Java и др.
- Некоторые библиотеки C++ используют исключения в своей работе и отказ от них может существенно усложнить интеграцию с этими библиотеками.
- Исключения являются единственным способом проинформировать о проблемах в конструкторе класса. Конечно, это можно обойти, используя фабричные методы или метод Init(), однако это потребует либо дополнительного выделения памяти или, соответственно, обработку специального «невалидного» состояния.
- Исключения очень удобны при использовании в тестировании (в тестовых фреймворках).
Против
- Если используется throw в функции, то вы должны проверить всех, кто эту функцию вызывает. Должна быть базовая гарантия безопасности при исключениях. Или же код никогда не ловит исключения и тогда программа может внезапно завершиться. Например есть код, где f() вызывает g(), который вызывает h(). Если h выбрасывает исключение, которое отлавливает f, то g нужно писать аккуратно, иначе могут быть утечки ресурсов и т.д.
- Обычно использование исключений усложняет отслеживание последовательности выполнения кода. Например, функции могут завершаться в неожиданных местах. Это затрудняет поддержку кода и его отладку. Вы можете улучшить ситуацию, следуя (своим) правилам когда и где можно использовать исключения. Однако, очень желательно, чтобы и другие разработчики знали об этих правилах.
- Безопасное использование исключений требует использования дополнительных принципов кодирования, например, RAII. И их количество (принципов кодирования) может быть значительным. Например, чтобы разработчик не разбирался в тонкостях всей цепочки вызовов неизвестного ему кода, желательно выделить код сохранения данных в хранилище в отдельную фазу-фиксацию. Такое выделение может нести как плюсы, так и минусы (э-э-э, корпоративная политика смешивания кода в одну кучу для удобства обсфуркации?). В любом случае, использование исключений уменьшает количество доступных вариантов.
- Использование исключений ведёт к распуханию бинарного файла программы, увеличивает время компиляции (иногда только чуть-чуть) и вообще может привести к проблемам с адресным пространством.
- Само наличие исключений может провоцировать разработчиков выбрасывать их по поводу и без повода, даже когда это не нужно или может привести к сложностям в обработке. Например, если пользователь вводит неподходящий текст, это не должно приводить к выбрасыванию исключения. И вообще, если всё это расписывать, то никакого документа не хватит!
Вердикт
Для новых проектов преимуществ от использования исключений обычнобольше, чем недостатков. Однако, для уже существующего кодавведение исключений может повлиять на весь код. Также могут возникнутьпроблемы стыка нового кода и старого (без исключений) кода.
Т.к. большинство C++ кода в Google не использует исключений, то очень проблематично будет внедрять новый код, который будетгенерировать исключения. Существующий код в Google не может корректно работать с исключениями, поэтому цена внедрения исключений намного выше, чем реализация любого нового проекта. Переписывание существующего кодапод обработку исключений — это будет очень медленный процесс, с большим количеством ошибок. Поэтому лучше использовать альтернативу в виде возврата кода ошибки и assert-ов: это не так сложно.
Этот запрет также распространяется на добавленные в C++11 возможности, такие как std::exception_ptr и std::nested_exception.
Однако, для кода под Windows есть послабления.
noexcept
Указывайте noexcept, если это корректно и будет полезно.
Определение
Спецификатор noexcept используется для указания, что функция не будет выбрасывать исключения. Если же функция с таким спецификаторомвсё же выбросит исключение, то произойдёт крэш программы через std::terminate.
Также есть оператор noexcept. Он выполняет проверку: объявлено ли выражениекак «не выбрасывающее исключений». Проверка проводится на этапе компиляции.
За
- Спецификация конструктора перемещения как noexcept может улучшить производительность в ряде случаев, например std::vector<T>::resize() скорее переместит объект нежели скопирует его, если конструктор перемещения для типа T заявлен как noexcept.
- Указание noexcept для функций может разрешить дополнительную оптимизацию, например компилятор может не генерировать код по раскрутке стека. Конечно, это имеет смысл, если в целом исключения разрешены.
Против
- Если проекты следуют данному руководству и в них исключения запрещены, то очень сложно проверить правильность спецификатора noexcept, если вообще применимо понятие правильности.
- Вы не можете безболезненно удалить ранее прописанный спецификатор noexcept, т.к. это аннулирует гарантию, на которую может полагаться другой код, причём полагаться весьма замысловатыми способами.
Вердикт
Используйте noexcept, когда это может улучшить производительность и точно отражает семантику функции (если из функции вылетело исключение, то это явная, фатальная ошибка).Считается, что noexcept на конструкторе перемещения может существенно улучшить производительность, учитывайте это.Если вы рассчитывайте на значительный прирост производительностиот применения noexcept для других функций, пожалуйста, сначала проконсультируйтесь с руководителем проекта.
Используйте безусловный noexcept, если исключения полностью запрещены (т.е. в типовом проекте C++ в Google).В ином случае, используйте спецификатор noexcept сусловиями (желательно простыми), которые становятся false в тех редких случаях, когда функция может всё-таки выбросить исключение.Эти тесты могут пользоваться проверками на характеристики типов(например, std::is_nothrow_move_constructible дляобъектов создаваемых через конструктор перемещения) или аллокаторов(например, absl::default_allocator_is_nothrow). Отметим, что наиболее частая причина исключений — невозможностьвыделения памяти (и да, мы верим, что это не относится к конструкторамперемещения — они не должны выбрасывать исключений из-за ошибок выделения памяти) и есть много приложений, для которых эта ситуацияозначает фатальную ошибку, которую даже не имеет смысла обрабатывать.И даже в других, потенциально ошибочных, ситуациях рекомендуетсяделать упор на простоту интерфейса, нежели на поддержку всех сценариевобработки ошибок: например, вместо написания накрученного noexceptс зависимостью от внешней хэш-функции (выбрасывает она исключения или нет), можно просто задокументировать, что разрабатываемый компонент не поддерживает хэш-функции, которые выбрасывают исключения. И, после этого, использовать noexcept без всяких дополнительных условий.
Информация о типе во время выполнения (RTTI)
Не используйте информацию о типе во время выполнения (RTTI).
Определение
RTTI позволяет запросить информацию о C++ классе объектаво время выполнения. Делается через typeid илиdynamic_cast.
За
Типовые альтернативы вместо RTTI (описано ниже)требуют модификации или редизайна иерархии классов, участвующих в запросах. Иногда такую модификацию очень тяжело сделать, или она нежелательна, особенно в коде, который уже используется в других проектах.
RTTI может быть полезен для юнит-тестов. Например, можнотестировать классы-фабрики на правильность сгенерированного типа.Также это полезно в выстраивании связей между объектами и ихмакетами (mock).
RTTI бывает полезно при работе с абстрактными объектами. Например:
bool Base::Equal(Base* other) = 0;
bool Derived::Equal(Base* other) {
Derived* that = dynamic_cast<Derived*>(other);
if (that == nullptr)
return false;
...
}
Против
Часто сам запрос типа объекта в процессе выполнения означает проблемы с дизайном приложения, показывает наличие изъянов виерархии классов.
Бесконтрольное использование RTTI усложняет поддержку кода.Это может привести в развесистым условиям, которые зависят от типа объекта, которые рассыпаны по всему коду. И которые придётся досконально изучать если будет необходимость что-то изменить в этом коде.
Вердикт
Использование RTTI может легко привести к злоупотреблениям, поэтому будьте аккуратны. Старайтесь ограничить использование RTTI только юнит-тестами. Рекомендуется отказаться от RTTIв новом коде. Если же требуется написать код, которыйведёт себя по разному в зависимости от типа объекта, возможно следующие альтернативы будут более подходящими:
- Виртуальные методы. Это предпочтительный способ для выполнения различного кода в зависимости от типа объекта. И вся работа (код) делается в самом объекте.
- Если код должен находится вне объектов, то можно использовать подходы, аналогичные двойной диспетчеризации, например шаблон проектирования Посетитель/Visitor. Это позволит внешнему коду самому определять тип объектов (используя систему типов).
Когда логика программы гарантирует, чтополученный указатель на базовый класс фактически есть указательна определённый производный класс, тогда можно свободно использоватьdynamic_cast. Правда, в этом случае лучше использоватьstatic_cast.
Большое количество условий, основанных на типе объекта, естьпоказатель явных проблем в коде.
if (typeid(*data) == typeid(D1)) {
...
} else if (typeid(*data) == typeid(D2)) {
...
} else if (typeid(*data) == typeid(D3)) {
...
Подобный код может рассыпаться, когда добавляется новый дочерний класс в иерархию. И вообще, очень тяжело модифицироватьбольшое количество разрозненных кусков кода в случаенебольших изменений в свойствах или методах дочерних классов.
И пожалуйста, не изобретайте собственный велосипед на замену RTTI. Аргументы против собственного решения будут такие же (см. выше), да и разбираться в чужих велосипедах обычно сложнее.
Приведение типов / Casting
Рекомендуется использовать приведение типов в C++-стиле: static_cast<float>(double_value). Также можно использовать инициализацию значением в скобках для преобразования арифметических типов: int64 y = int64{1} << 42. Избегайте конструкций вида int y = (int)x или int y = int(x) (хотя последний вариант допустим при вызове конструктора класса).
Определение
В C++ приведение типов расширяется по сравнению с чистым C путём добавления операций приведения.
За
Основная проблема с приведением типов в чистом C — неоднозначность операции. Например, одинаково записанная операция: (int)3.5 и (int)«hello» сильно отличается по смыслу. Инициализация в скобках и операции в стиле C++ часто помогают избежать такой неоднозначности. Дополнительная плюшка: операции приведения в стиле С++ легче искать по коду.
Против
C++-стиль довольно громоздкий.
Вердикт
Избегайте использования приведения типов в стиле чистого C. Вместо этого используйте стиль C++ когда требуется явное преобразование типов.
- Используйте инициализацию в скобках для преобразования арифметических типов (int64{x}). Это самый безопасный способ, т.к. в других случаях (при потере информации при конвертации) код может не скомпилироваться. Плюс лаконичный синтаксис.
- Используйте static_cast как эквивалент преобразований в C-стиле или когда необходимо преобразовать указатель на дочерний класс в указатель на базовый и обратно (указатель на базовый класс преобразовать в указатель на дочерний (и желательно, чтобы сам объект был экземпляром дочернего класса)).
- Используйте const_cast чтобы убрать квалификатор const (см. const).
- Используйте reinterpret_cast чтобы небезопасно преобразовать указатели к целым числам или указателям другого типа. Используйте эту операцию только если вы знаете, что делаете и понимаете проблемы с выравниванием. Также, можете использовать в таких случаях absl::bit_cast.
- Используйте absl::bit_cast для приведения «сырых» битов в другой тип такого же размера (например, если требуется интерпретировать double как int64).
Также может быть полезным раздел RTTI с описанием dynamic_cast.
Потоки / Streams
Используйте потоки в подходящих случаях, особенно если их использование упрощает код. Перегружайте операцию << только для типов-значений и выводите в поток собственно данные (доступные пользователю). Не выводите в поток внутренние переменные (инварианты и т.д.) и другие детали реализации.
Определение
Потоки являются стандартной абстракцией для ввода/вывода в C++, (см. стандартный заголовочный файл <iostream>). Они часто используются в коде в Google, особенно для отладочного логирования и диагностики.
За
Операторы << и >> реализуют форматированный ввод/вывод, они просты в понимании, портабельны, расширяемы и повторно используемы. Противоположность к ним — printf, который даже не поддерживает работу с std::string. Кроме того не работает с пользовательскими типа и с портабельностью там проблемы. Кроме того, printf вынуждает выбирать среди похожих версий одной функции и ориентироваться в десятках форматных символах.
Потоки обеспечивают хорошую поддержку консольного ввода/вывода через std::cin, std::cout, std::cerr и std::clog. Функции из C API тоже хорошо работают, однако могут требовать вручную буферизировать ввод.
Против
- Форматирование потоков можно настроить через манипуляторы, изменяющие состояние потока. Учтите, применение манипуляторов сохраняется во времени и, как результат, поведение кода зависит от истории использования потока (или необходимо будет всё восстанавливать в известное состояние после каждого случая возможного применения манипуляторов). Кроме того, пользовательский код может (помимо модификации встроенных параметров) создавать собственные манипуляторы, добавлять переменные состояния и изменять поведение через функционал register_callback.
- Проблематично полностью контролировать вывод потока: смена настроек (см. выше), вывод мешанины из параметров и собственно данных, использование перегрузки операторов (и компилятор может выбрать не ту перегрузку, которая предполагалась) — всё это не добавляет управляемости.
- Формирование вывода посредством вызова цепочки операторов << затрудняет локализацию, т.к. при этом жёстко, прямо в коде, фиксируется порядок слов. И средства поддержки локализации лишаются ценности.
- Потоковый API может быть сложным, с тонкостями. И программисты должны уметь с ним работать, чтобы код был эффективным.
- Выбор правильной версии оператора << из большого количества аналогичных является для компилятора затратным. При частом их использовании в большой кодовой базе, время парсинга и анализа может отъедать до 20% времени.
Вердикт
Используйте потоки только если они являются наилучшим решением. Обычно это варианты ввода/вывода в человекочитаемый формат, предназначенный для разработчиков, а не для конечного пользователя. Также не забывайте, что в проекте уже могут быть устоявшиеся методы ввода/вывода — старайтесь использовать их. В частности, библиотеки для логирования и диагностического вывода обычно предпочтительнее нежели std::cerr или std::clog. И вместо std::stringstream лучше использовать absl/strings или их эквивалент.
Не рекомендуется использовать потоки для ввода/вывода в случае обмена данными с конечными пользователями или где возможно нарушение формата или валидности данных. В таких случаях используйте подходящие (шаблонные) библиотеки, которые корректно обрабатывают интернационализацию, локализацию, проверяют корректность данных и формата.
Если потоки всё же используются, старайтесь избегать API работы с состояниями, кроме состояния ошибки. Т.е. не используйте imbue(), xalloc() и register_callback(). Рекомендуется использовать явные функции форматирования (см. absl/strings) вместо манипуляторов или флагов форматирования для таких вещей как смена основания системы счисления, точности или набивка нулями до нужного размера чисел.
Перегружайте оператор << только для типа-значения с тем, чтобы оператор выводил человеко-читаемое представление. Не выводите в поток детали реализации или внутренние переменные. Если же требуется отладочная печать внутреннего состояния, то используйте обычные функции-методы (например, метод класса DebugString() — подходящий вариант).
Преинкремент и предекремент
Используйте префиксные формы (++i) инкремента и декремента над итераторами и другими шаблонными объектами.
Определение
Когда переменная инкрементируется (++i, i++) или декрементируется (—i, i—), а возвращаемое значение не используется, то необходимо чётко понимать: использовать префиксную форму (++i, —i) или постфиксную (i++, i—).
За
Когда возвращаемое значение игнорируется, то префиксная форма не менее эффективна постфиксной (чаще префиксная более эффективна). Связано это с тем, что постфиксная реализация должна сделать копию переменной с исходным значением для возврата результата. Если переменная является итератором или другим сложным типом, то копирование её может быть затратным по ресурсам. Поэтому, если обе формы ведут себя одинаково (возвращаемое значение игнорируется), почему бы не использовать всегда префиксную форму?
Против
Традиционно раньше в разработке (особенно на языке C) использовалась постфиксная форма, особенно для циклов for. Иногда программистам легче читать код с постинкрементом, т.к. «субъект» (i) стоит перед «действием» (++), как в английском предложении.
Вердикт
Для простых скалярных (не-объектов) типов нет особой разницы в использовании префиксной или постфиксной формы. Для итераторов и других шаблонных типов используйте префиксную форму.
Использование const
В API используйте const когда это имеет смысл. В ряде случаев constexpr будет лучшей альтернативой const.
Определение
При объявлении переменных или параметров вначале может быть указано const, чтобы показать что переменные не изменяются (например, const int foo). Функции класса могут быть с квалификатором const, чтобы показать, что эта функция не изменяет состояние членов класса (например, class Foo { int Bar(char c) const; };).
За
Позволяет легко понять, как использовать переменные. Компиляторам даёт возможность полнее контролировать типы и, теоретически, генерировать лучший код. Использование констант даёт дополнительную защиту (уверенность) в корректности кода: функции не могут модифицировать переменные, изменять состояние класса и, как результат, можно безопасно работать без локов в многопоточном окружении.
Против
Использование const оно «заразное»: если передаётся const переменная в функцию, то она должна в прототипе иметь указание на const (или придётся делать const_cast). И это может быть проблемой при вызове библиотечных функций.
Вердикт
Настоятельно рекомендуется использовать const в API (параметры функций, методы, не-локальные переменные), где это имеет смысл. Такой подход даёт понятное (и верифицируемое компилятором) описание как можно модифицировать объекты. Чёткое разделение на модифицирующие (запись) и не-модифицирующие (только чтение) операции очень полезно, особенно для написания потокобезопасного кода. В частности:
- Если функция не меняет аргумент, переданный по ссылке или указателю, то он должен быть ссылкой на константу (const T&), либо указателем на константу (const T*).
- Если параметр передаётся по значению, то использование const не даёт никакого эффекта. Поэтому не рекомендуется объявлять константный параметр. См. также TotW #109.
- Старайтесь объявлять члены класса константными (const) если они не изменяют логическое состояние объекта (и не дают возможности другим что-то менять, например через возврат не-константной ссылки). В противном случае эти методы могут быть небезопасными в многопоточном окружении.
Использование const для локальных переменных отдаётся на усмотрение программиста: можно использовать, можно — нет.
Все const операции класса должны работать корректно при одновременном вызове нескольких функций. Если это не выполняется, то класс должен быть явно описан как «потоко-не-безопасный».
Местоположение const
Иногда используется форма int const *foo вместо const int* foo. Обосновывается это тем, что первая форма более логична: const следует за описываемым объектом. Однако, такая «логичность» имеет мало смысла (и обычно не применяется в коде с несколькими вложенными маркерами «указатель»), т.к. чаще всего есть только один const для базового значения. В таком случае нет необходимости специально заботиться о логичности. Размещение же const вначале делает код более читабельным и согласованным с английским языком: прилагательное (const) стоит перед существительным (int).
Так что расположение const вначале является предпочтительным. Однако, это не жёсткое условие и если остальной код в проекте использует другой порядок — следуйте за кодом!
Использование constexpr
Используйте constexpr для определения констант или чтобы сделать константную инициализацию.
Определение
Переменные можно объявлять как constexpr для указания на константу, значение которой определяется во время компиляции или линковки. Также можно объявлять функции и конструкторы как constexpr, чтобы их можно было использовать для определения переменной с constexpr.
За
constexpr позволяет определять выражения с плавающей запятой (помимо литералов), использовать константы для пользовательских типов и вызовов функций.
Против
Использование constexpr может вызвать проблемы с поддержкой кода (или миграцией), если константность нужно будет позже убрать. Текущие ограничения для константных функций или конструкторов могут потребовать реализации дополнительных обходных путей в коде.
Вердикт
constexpr позволяет определить неизменяемые части интерфейса. Используйте constexpr чтобы определить константы и функции для задания им значений. Не используйте constexpr, если это потребует усложнения кода. Не используйте constexpr, чтобы сделать код «встраиваемым» (inlining).
Целочисленные типы
Среди встроенных целочисленных типов C++ необходимо использовать int. Если в программе требуется переменная другого размера, то используйте целочисленные типы фиксированной длины из <stdint.h>, такие как int16_t. Если переменной нужно хранить значения, равные или превышающие 2^31 (2GiB), используйте 64-битный тип int64_t. При оценке размера не забудьте, что в int должен укладываться не только результат, но и промежуточные значения при вычислениях. И, если сомневаетесь, используйте тип подлиннее.
Определение
C++ не уточняет размер целочисленных типов, таких как int. Обычно считается, что short содержит 16 битов, int — 32, long — 32 и long long содержит 64 бита.
За
Унификация в коде.
Против
Размеры целочисленных типов в C++ могут изменяться в зависимости от компилятора и архитектуры.
Вердикт
В <cstdint> определяются различные типы: int16_t, uint32_t, int64_t и т.д. Если требуются типы фиксированного размера, то не используйте short, unsigned long long и им подобные. Из целочисленных типов языка C можно использовать только int. Также, в соответствующих случаях, используйте size_t и ptrdiff_t.
Тип int используется очень часто, особенно для небольших значений, например как счётчики в циклах. Можете считать, что int содержит минимум 32 бита (но не больше). Если требуется 64 битный целочисленный тип, то используйте int64_t или uint64_t.
Для типа который может хранить «большие значения» используйте int64_t.
Старайтесь не использовать беззнаковые числа (например, uint32_t). Допустимое применение беззнаковых чисел это использование битовых представлений или использование переполнения (по модулю 2^N) в расчётах. Отметим, что также не рекомендуется использовать беззнаковый тип чтобы указать на отсутствие отрицательных значений: в этом случае используйте assert-ы.
Если код возвращает размер контейнера, то убедитесь, что его тип (размера) является достаточным для любого возможного использования. И если сомневаетесь, используйте тип подлиннее.
Будьте внимательны при конвертировании целочисленных типов. Может появится неопределённое поведение (UB), ведущее к багам безопасности и другим проблемам.
Беззнаковые целые числа
Беззнаковые целые числа отлично подходят для работы с битовыми полями и модульной арифметики. Так сложилось, что стандарт C++ использует беззнаковые числа и для возврата размера контейнеров (хотя многие члены организации по стандартизации и считают это ошибкой; в любом случае, сейчас это уже не изменить). Ситуация, что беззнаковая арифметика по поведению является модульной (заворачивание значений при переполнении) и отличается от обычной (знаковой), не позволяет компилятору диагностировать большое количество ошибок. Фактически, такое поведение затрудняет оптимизацию.
С другой стороны, совместное использование беззнаковых и знаковых целых чисел создаёт ещё больше проблем. Лучшее решение: старайтесь использовать итераторы вместо указателей и явных размеров; не мешайте беззнаковые числа вместе со знаковыми; избегайте беззнаковых чисел (кроме работы с битовыми полями и для модульной арифметики); не используйте беззнаковые числа только чтобы показать, что переменная неотрицательная.
Совместимость с 64-бит
Написанный код должен быть совместим как с 64-битной, так и с 32-битной архитектурой. Особое внимание обращайте на печать в консоль, операции сравнения и выравнивание структур.
-
Форматные символы printf() для некоторых целочисленных типов основываются на макроопределениях (например, PRI из <cinttypes>). И такой подход является непрактичным, нежелательным и т.д. Поэтому очень желательно не использовать функцию printf (и подобные) в своём коде, или даже переписать существующий код. Вместо неё можно использовать библиотеки, поддерживающие безопасное форматирование числовых значений, такие как StrCat
или Substitute
для простых преобразований, или std::ostream
.К сожалению, макросы PRI являются единственным переносимым способом указать формат для типов данных с задаваемым размером (int64_t, uint64_t, int32_t, uint32_t и т.д.). По возможности не передавайте аргументы таких типов в функции, основанные на printf. Исключение составляют типы, для которых есть свой выделенный модификатор длины, например size_t (z), ptrdiff_t (t) и maxint_t (j).
- Помните, что sizeof(void*) != sizeof(int). Используйте intptr_t в случае, если требуется целочисленный тип размером, равным размеру указателя.
- Будьте аккуратны с выравниванием структур, особенно тех что записываются на диск. Обычно классы и структуры, в которых есть член типа int64_t или uint64_t, по умолчанию выравниваются на границу 8 байт в 64-битных системах. Если в коде есть подобные структуры, они сохраняются на диске и используются 32-битным и 64-битным кодом, то обязательно проверьте, что структуры упаковываются одинаково на обеих архитектурах. Большинство компиляторов позволяют задать выравнивание структур. В gcc можно использовать __attribute__((packed)). В MSVC — #pragma pack() и __declspec(align()).
-
Используйте инициализацию в фигурных скобках если требуется создать 64-битную константу. Например:
int64_t my_value{0x123456789}; uint64_t my_mask{3ULL << 48};
Макросы препроцессора
Избегайте определения макросов, особенно в заголовочных файлах. Вместо этого используйте встраиваемые функции, перечисления или переменные-константы. Если используете макросы, то в имени используйте префикс — название проекта. Не используйте макросы, чтобы переопределить или дополнить C++ API.
Использование макросов подразумевает, что программист видит один код, а компилятор — другой. Это может вызвать неожиданные последствия, особенно если макросы глобальные.
Ситуация может усугубиться, когда макросы используются для переопределения С++ или другого публичного API. При любых ошибках в использовании API потребуется разбираться в логике макросов; увеличивается время разбора кода инструментами рефакторинга или анализаторами. Как результат, использование макросов в таких случаях запрещено. Например, откажитесь от подобного кода:
class WOMBAT_TYPE(Foo) {
// ...
public:
EXPAND_PUBLIC_WOMBAT_API(Foo)
EXPAND_WOMBAT_COMPARISONS(Foo, ==, <)
};
К счастью, в C++ зависимость от макросов поменьше, чем в C. Вместо макросов для высокопроизводительного кода можно использовать встраиваемые функции. Для хранения констант есть const переменные. Чтобы для удобства «укоротить» длинное имя переменной используйте ссылки. Вместо применения макросов для условной компиляции кода используйте… лучше не используйте условную компиляцию (конечно же это не касается защиты от повторного включения заголовочных файлов через #define). Тем более условная компиляция затрудняет тестирование кода.
С другой стороны, есть приёмы кодирования, которые делаются только через макросы. Обычно это можно увидеть в низко-уровневых библиотеках. Также есть приёмы (преобразование в строку, объединение строк и т.д.), которые нельзя сделать средствами самого языка напрямую. В любом случае, перед использованием макросов попробуйте найти способ реализации без макросов. Если же необходимо использовать макросы для определения интерфейса то предварительно обязательно проконсультируйтесь с руководством.
Следующие правила позволят избежать ряда проблем с макросами. По возможности следуйте им:
- Не определяйте макросы в заголовочных (.h) файлах.
- Определяйте (#define) макросы по возможности ближе к месту первого использования. И когда макросы уже не используются, то делайте #undef.
- Не делайте #undef существующих макросов с последующим их переопределением своей версией. Вместо этого лучше придумайте для своих макросов уникальное имя и используйте его.
- Постарайтесь не использовать макросы, которые раскрываются в большие и неустойчивые конструкции C++. По крайней мере, документируйте такое поведение.
- Старайтесь не использовать ## для генерации имени функции/класса/переменной.
Настоятельно не рекомендуется экспортировать макросы из заголовочных файлов (т.е. определять макрос и не делать #undef его в конце заголовочного файла). Если макрос экспортируется из заголовочного файла, то он должен иметь глобальное уникальное имя. Как вариант, добавьте префикс с именем пространства имён проекта (заглавными буквами).
0 и nullptr/NULL
Используйте nullptr для указателей и ‘