LINUX.ORG.RU

История изменений

Исправление byko3y, (текущая версия) :

Объекты нужны и обязательно с конструкторами/деструкторами (важно для управления ресурсами)

Да, для управления ресурсами обязательно избегать нетривиальных конструкторов и деструкторов, которые не позволяют этими ресурсами управлять из-за невозможности возврата ошибок из конструкторов и бросания исключений в деструкторах.

Наследование - ну я бы не ограничивал, там где нужно почему бы и нет

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

Для начала можно без... миллиона типов конструкторов (типа константных, перемещения и т. п.), множественного наследования, друзей

Кстати, да, вырезать умолчательные конструкторы копирования — очень хорошая идея. И константные методы тоже в большинстве случаев являются довольно бессмысленными приседаниями, приносящими равное количество облегчения и геморроя — хотя DarkEld3r со мной не согласится. Не путать с константностью типов, которая может иметь абсолютную пользу для примитивных типов в ряде случаев.

С STL практически полностью пропадает необходимость ручного управления памятью. Начать с std::vector и std::string

Да, вместо ручного управления памяти ты получаешь непонятно что с непонятно какой производительностью. Контейнеры STL были попыткой сделать из крестов высокоуровневый инструмент аля питон, чтоб ассоциативные массивы писались в две строки, но по факту получилось ни рыба, ни мясо: для низкого уровня слишком большие накладные расходы, а для высокого уровня слишком много острых углов (UB и ошибок работы с указателями) и чудовищно вырвиглазнейшие сообщения об ошибках — fsb4000 тут когда-то постил рекордной длинный выхлоп компилятора на одну ошибку использования STL, там что-то типа 150 ошибок было. Но получить ошибку из STL на пол-экрана — это полнейшая норма.

Исключения - must-have для нормальной обработки ошибок. Да и STL без них нормально не поиспользуешь

Да, в том числе поэтому STL отправляется на помойку — потому что плохо работает без исключений.

Исходная версия byko3y, :

Объекты нужны и обязательно с конструкторами/деструкторами (важно для управления ресурсами)

Да, для управления ресурсами обязательно избегать нетривиальных конструкторов и деструкторов, которые не позволяют этими ресурсами управлять из-за невозможности возврата ошибок из конструкторов и бросания исключений в деструкторах.

Наследование - ну я бы не ограничивал, там где нужно почему бы и нет

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

Для начала можно без... миллиона типов конструкторов (типа константных, перемещения и т. п.), множественного наследования, друзей

Кстати, да, вырезать умолчательные конструкторы копирования — очень хорошая идея. И константные методы тоже в большинстве случаев являются довольно бессмысленными приседаниями, приносящими равное количество облегчения и геморроя — хотя DarkEld3r со мной не согласится. Не путать с константностью типов, которая может иметь абсолютную пользу для примитивных типов в ряде случаев.

С STL практически полностью пропадает необходимость ручного управления памятью. Начать с std::vector и std::string

Да, вместо ручного управления памяти ты получаешь непонятно что с непонятно какой производительностью. Контейнеры STL были попыткой сделать из крестов высокоуровневый инструмент аля питон, чтоб ассоциативные массивы писались в две строки, но по факту получилось ни рыба, ни мясо: для низкого уровня слишком большие накладные расходы, а для высокого уровня слишком много острых углов (UB и ошибок работы с указателями) и чудовищно вырвиглазнейшие сообщения об ошибках — fsb4000 тут когда-то постил рекордной длинный выхлоп компилятора на одну ошибку использования STL — там что-то типа 150 ошибок было. Но получить ошибку из STL на пол-экрана — это полнейшая норма.

Исключения - must-have для нормальной обработки ошибок. Да и STL без них нормально не поиспользуешь

Да, в том числе поэтому STL отправляется на помойку — потому что плохо работает без исключений.