Задать вопрос
@SkyDatter

Какой open source проект написан на труъ Си++?

Пол жизни писал для микроконтроллеров и на ассемблере. Сейчас перевели на кросс-платформенный проект, где всё "нужно писать на си++". И теперь сверху жалуются, что мой код "слишком сишный", то есть написан на Си без плюсов, хоть я и использую классы. Проблема в том, что никто из коллег на работе не может нормально объяснить, как, собственно должен выглядеть "плюсовый" код.

Посоветуйте пожалуйста какой-нибудь не очень сложный open source проект, написанный на "труъ с++"? "Не очень сложный" не обязательно - но как правило "большие" проекты смешивают в себе немало парадигм и стилей. Или посоветуйте библиотеку, на код и примеры использования которой можно посмотреть и сказать, что это - настоящий С++.
  • Вопрос задан
  • 308 просмотров
Подписаться 1 Средний 3 комментария
Решения вопроса 5
Adamos
@Adamos
Видимо, вы используете классы, но не используете ООП.
Пишете плоско-процедурно, без выделения абстракций.
Вам бы лучше на Java какой-нибудь опенсурс посмотреть. Ну, или почитать "Рефакторинг" Фаулера с примерами на той же джаве. Для смены парадигмы.
Ответ написан
Комментировать
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Ну, посмотрите хотя бы хромиум. Там жесткий стиль и хоть качество кода не равномерное, в основном это точно не "Си с классами".

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

Если постоянные жалобы, то устройте код ревью в команде. Пусть ваш код хотя бы пару неделек кто-то постоянно будет проверять перед комитом и выдавать конкретные правки (а вообще код-ревью хорошо использовать всегда. Тот же github дает возможность это делать. Или есть опен сорсный gerrit).

Возможно, вы используете классы только как структуры максимум с какими-то тривиальными действиями (типа get_sum, get_value, set_value и т.д.). Когда как в ООП объекты должны инкапсулировать в себе логику и уметь делать нетривиальные вещи. Сама программа должна состоять из взаимодействующих объектов.

Еще использование stl. Стоит избегать массивов - используются std::vector. Так же вместо char* стоит использовать std::string. Ну и там куча алгоритмов есть: от выбора максимума в массиве до сортировки.
Ответ написан
Комментировать
@rPman
можно какой-нибудь ярко выраженный пример кода, на который жалуются коллеги?

могу предположить
вместе с c++ обычно идут библиотеки std, даже не так, можно printf а можно cout, можно со строками работать, ковыряясь с байтами самостоятельно, strccpy, while(*buf) и т.п. а можно пользоваться std:string, кучей готовых реализаций (и сильно неэффективного кода но с меньшими шансами на ошибки)
Ответ написан
Комментировать
@Miron11
Пишу sql 20 лет. Срок :)
Good example with templates and patterns.
One of a few projects where modules carefully encapsulate internals and expose a finely tuned publicly accessible interface
https://github.com/apache/arrow.git
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Полностью согласен с необоснованностью претензий. Те кто делали код-ревью и отметили что код слишком сишный должны писать конкретные code-review points и аргументировать почему здесь надо затащить классы и ООП. Есть масса продуктов (git) написанных на С и ни у кого не возникает вопросов из серии почему мало ООП. Сколько надо ООП на квадратный метр? Килограмм?

Нет смысла также кидаться в гитхаб и искать там правильные TrueЪ примеры. Там тоже не боги горшки обжигают. Кроме того С++ - это не только ООП, это мультипарадигменный язык. Тоесть там будут где надо виртуальные вызовы а где надо лямбды или процессор шаблонов и только богу известно почему автор решил здесь так или эдак.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Drno
Если коллегам ненравится что то - пусть объяснят и покажут что.
В иных случая - неипёт
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы