pluffie
@pluffie
Стыдно за старые вопросы

Какой код правильнее?

Есть структура
struct Book
{
	std::string name;
	std::string author;
};

Какое объявление её объекта правильнее?
Book cpp {
    "The C++ Programming Language",
    "Бьёрн Страуструп"
};

Или
auto cpp = Book {
    "The C++ Programming Language",
    "Бьёрн Страуструп"
};

Или это всё ересь, и нужно писать как-то по-другому?
  • Вопрос задан
  • 149 просмотров
Решения вопроса 2
@MarkusD Куратор тега C++
все время мелю чепуху :)
Любой написанный человеком код всегда должен быть полностью понятен другому человеку при чтении. Важно обратить внимание на то, что код читателю должен быть понятен уже просто при чтении, а не при запуске и, тем более, не при трассировке. Читатель должен иметь возможность не задаваться вопросами о причинах существования написанного кода.

Вопросов к первому варианту нет. Тут сразу и наглядно видно агрегатную инициализацию, т.к. тип Book является агрегатным.

Ко второму варианту есть вопросы. Какова цель присутствия auto вместо явного указания типа переменной? Зачем писателю потребовалось дважды указать тип, заменив первое указание на auto? Какова цель инициализации копией для данной переменной? Зачем писатель написал так сложно?
Ответы на каждый вопрос должны предоставлять веское доказательство необходимости существования именно такого кода.

Чистый код не вызывает у читателя вопросов. Чистый код не молит стереть его или срочно отрефакторить. С чистым кодом приятно работать. Чистый код приятно писать. И самое важное: за чистый код автору не стыдно.
А вот за грязный код, вроде второго варианта, писателю должно быть стыдно, т.к. писатель таким своим кодом ворует время своих сотрудников и у самого себя в будущем через то, что заставляет тратить это время на то чтобы вчитаться и понять написанное.
Ответ написан
Комментировать
LoliDeveloper
@LoliDeveloper
Линейная алгебра как смысл жизни
Если я не ошибаюсь, то ваше "равно" копирует объект, а это лишняя операция
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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