Правила c++, как правильно писать код? читаемость кода c++ - Вопросы по С+

Вопрос Правила c++, как правильно писать код? читаемость кода c++

Регистрация
21 Сен 2013
Сообщения
85
Репутация
0
Спасибо
0
Монет
0
Я не могу совсем разобраться как правильно писать код, ну т.е. куда ставить пробелы куда нет и т.д.



Вот например код C++ #include

#include

#ifdef _WIN32

#include

#endif



int main() {

#ifdef _WIN32

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

#endif

std::cout
 
Регистрация
9 Ноя 2012
Сообщения
95
Репутация
1
Спасибо
0
Монет
0
В основном для читаемости используют специальные форматеры кода. Например, я для C/C++ использую clang-format со стилем "Google Style" — очень удобно автоматически форматировать код. Так же существуют и другие стили помимо гугловского.
А отделения строк кода дополнительными переносами, как и комментарии – скорее вкусовщина. Лучше копать в сторону декомпозиции кода, если он кажется нечитаемым и стараться выделять логические единицы в отдельные функции:)
 
Регистрация
30 Мар 2013
Сообщения
83
Репутация
0
Спасибо
0
Монет
0
Пробелы обязательны далеко не всегда. Они нужны только тогда, когда текст без пробелов компилятор мог бы интерпретировать неоднозначно. В твоем первом варианте тоже можно убрать множество пробелов без каких-либо последствий. А куда и сколько пробелов ставить для того, чтобы код выглядел красивее, в каждой фирме свои правила.
 
Регистрация
13 Июн 2013
Сообщения
76
Репутация
0
Спасибо
0
Монет
0
Ты прав, оба кода читаемы, но второй пример значительно более чистый и стандартизированный. В программировании важно не только, чтобы код работал, но и чтобы он был понятен другим разработчикам и легко поддерживался в будущем. В данном случае, второй код имеет несколько улучшений, связанных с форматированием и стилем, что делает его лучше с точки зрения лучших практик разработки на C++.

Давай разберём это более подробно и посмотрим, как писать читабельный и профессиональный код на C++:

1. Форматирование:
Отступы — во втором примере ты используешь 4 пробела для отступов (это индустриальный стандарт), что делает структуру программы более понятной. Первый пример не использует отступы внутри блока кода, что делает его менее читабельным.
Пробелы после include — во втором примере добавлены пробелы между директивами #include, что визуально разделяет их и облегчает чтение.
2. Чистый код:
Пробелы вокруг операторов. В первом примере есть слипания, например, std::cout<<"O-B-1, что усложняет восприятие кода. Во втором примере — корректно добавлены пробелы перед и после оператора <<: std::cout << "O-B-1 >> Привет! Как тебя зовут?".
Лишние строки. Во втором примере у тебя есть пустые строки между разными логическими блоками, что помогает лучше структурировать код. Первый пример кажется слитым и менее структурированным.
3. Читаемость:
Читаемость важнее краткости. Код должен быть написан так, чтобы его легко было читать и понимать. Это не означает, что его надо удлинять искусственно, но логические части кода стоит отделять.
Во втором примере добавлены запятые в строках, что делает текст сообщения более естественным:
Первый пример: Приятно познакомиться input!
Второй пример: Приятно познакомиться, input!
4. PEP8 для C++?
PEP8 — это стандарт для Python, но для C++ есть аналогичные рекомендации, такие как Google C++ Style Guide или LLVM Coding Standards. Вот несколько правил для чистого и профессионального кода на C++:

Отступы. Используй 4 пробела для отступов. Никогда не используй табуляцию (табулятор может отображаться по-разному на разных системах).
Пробелы:
Пробелы перед и после операторов: =, +, <<, >> и других.
Пробелы после запятых и точек с запятой.
Пробел после if, for, while, перед открывающей скобкой: if (condition).
Не ставь лишние пробелы перед закрывающими скобками: return 0; (нет пробела перед ;).
5. Избегай длинных блоков кода:
Логику внутри блока можно разделить на меньшие функции, что облегчает чтение и повторное использование кода.
Например, ввод имени можно вынести в отдельную функцию.
6. Заменяем циклы и if/else:
Иногда циклы и условия можно упростить с помощью других методов, но в твоём примере это пока не нужно — в коде нет явных циклов или сложных условий.

#include
#include

#ifdef _WIN32
#include
#endif

void setConsoleCP() {
#ifdef _WIN32
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
#endif
}

std::string getUserName() {
std::cout
 
Сверху Снизу