Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Стиль кода для С и С++ в одном проекте


Автор: drug007 3.10.2014, 08:33
Добрый день.
Поделитесь опытом, пожалуйста, у кого в проекте есть и сишный и плюсовый код - используете ли вы один стиль кода или разный для разных языков? Проекту нужен рефакторинг и возникла мысль что разный стиль кода позволит дополнительно различать сишный и плюсовый код, а практика показала, что некоторые испытывают некоторые сложности с этим.

Автор: Lukkoye 3.10.2014, 10:32
Цитата(drug007 @  3.10.2014,  08:33 Найти цитируемый пост)
Проекту нужен рефакторинг и возникла мысль что разный стиль кода позволит дополнительно различать сишный и плюсовый код, а практика показала, что некоторые испытывают некоторые сложности с этим. 


суржик - плохо.
мухи отдельно, котлеты отдельно - хорошо.

рефактор: 
сишный код - в сишные библиотеки.
плюсовый код - в плюсовые библиотеки.

там, где нужна интеграция сишного апи в оо-рхитектуру, изготавливается класс-обертка.

пример:

libpq - сишная библиотека.
libpqxx - с++ библиотека. Которая является оо-оберткой над libpq, и использует все преимущества ооп.

в проекте с++ используют libpqxx, без необходимости вообще знать о существовании libpq

Автор: baldina 4.10.2014, 23:46
один стиль. синтаксис одинаковый, разные стили делают чтение неудобным.
Цитата(drug007 @  3.10.2014,  08:33 Найти цитируемый пост)
разный стиль кода позволит дополнительно различать сишный и плюсовый код

зачем? С++ довольно таки совместим с С. функции в С в С++ всегда помечены как extern "C", этого достаточно.

Автор: drug007 6.10.2014, 11:28
Цитата(baldina @  4.10.2014,  23:46 Найти цитируемый пост)
зачем? С++ довольно таки совместим с С. 

Да вот сам пока точно не знаю, потому и советуюсь. Но мысль такая есть. smile

Цитата(baldina @  4.10.2014,  23:46 Найти цитируемый пост)
 функции в С в С++ всегда помечены как extern "C", этого достаточно. 

Встречалось, что одна и та же библиотека при сборке в сишном проекте собиралась с сишным ABI, а при сборке в плюсовом с плюсовым ABI. И спокойно себе жили две разные бинарные версии одной и той же библиотеке в одном и том же продукте одновременно. 

Автор: baldina 6.10.2014, 11:38
если оно в с++ собирается как с++, о каком С тогда речь?

Автор: drug007 6.10.2014, 14:46
Просто есть код на Си, который используется и в сишном проекте и в плюсовом в виде source library. 

Автор: baldina 6.10.2014, 14:57
drug007, не стоит один и тот же код компилировать как С и С++ в разных проектах. несмотря на совместимость, могут быть тонкие места, и зачем вам поддерживать два варианта кода, если можно один.
пример: sizeof('A') в C и C++ имеет разное значение

Автор: drug007 6.10.2014, 15:45
Полностью согласен. Но факт имел место быть. Поэтому и возникла мысль о разном стиле, чтобы это наводило людей о мысли, что что-то не так. В проекте участвуют и будут участвовать люди с навыками разного уровня, а тут вроде как лишняя подсказка. А переписывать все на один язык точно никто не будет.

Автор: Antonoff 6.10.2014, 15:48
Цитата(drug007 @ 3.10.2014,  08:33)
Добрый день.
Поделитесь опытом, пожалуйста, у кого в проекте есть и сишный и плюсовый код - используете ли вы один стиль кода или разный для разных языков? Проекту нужен рефакторинг и возникла мысль что разный стиль кода позволит дополнительно различать сишный и плюсовый код, а практика показала, что некоторые испытывают некоторые сложности с этим.

Надо избавляться от Си, и вообще переходить на Java. Си это ни капли не ООП. Си это ассемблер, маскирующийся под язык высокого уровня. Наличие кода на Си неприемлемо в современном проекте.

Автор: drug007 6.10.2014, 16:01
Цитата(Antonoff @  6.10.2014,  15:48 Найти цитируемый пост)
Надо избавляться от Си, и вообще переходить на Java. Си это не фига не ООП. Си это ассемблер, маскирующийся под язык высокого уровня. Наличие кода на Си неприемлемо в современном проекте. 

Излишне категоричное утверждение. Холиваров нам не надо.

Автор: Guinness 7.10.2014, 07:15
Цитата(Antonoff @  6.10.2014,  16:48 Найти цитируемый пост)
Надо избавляться от Си, и вообще переходить на Java. Си это ни капли не ООП. Си это ассемблер, маскирующийся под язык высокого уровня. Наличие кода на Си неприемлемо в современном проекте.

Так толсто, что лодка идёт ко дну.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)