Усі хороші відповіді.
Я б лише додав "мінімізувати структуру даних". Це може бути навіть простіше в C, тому що якщо C ++ - це "C з класами", ООП намагається заохотити вас взяти кожен іменник / дієслово у вашій голові і перетворити його на клас / метод. Це може бути дуже марнотратно.
Наприклад, припустимо, у вас є масив показань температури в певний момент часу, і ви хочете відобразити їх як лінійну діаграму в Windows. У Windows є повідомлення PAINT, і коли ви його отримуєте, ви можете прокручувати масив, виконуючи функції LineTo, масштабуючи дані, перетворюючи їх у піксельні координати.
Те, що я бачив надто багато разів, це те, що, оскільки діаграма складається з точок і ліній, люди створять структуру даних, що складається з точкових об'єктів і об'єктів лінії, кожен з яких здатний DrawMyself, а потім зробить це стійким на теорії, що це якось "ефективніше", або що їм, можливо, просто, можливо, доведеться мати змогу навести курсор на частини діаграми та відобразити дані чисельно, тому вони вбудовують методи в об'єкти, щоб мати справу з цим, і це, звичайно, передбачає створення та видалення ще більшої кількості об’єктів.
Таким чином, ви отримуєте величезну кількість коду, який є дуже читабельним і просто витрачає 90% свого часу на управління об’єктами.
Все це робиться в ім'я "належної практики програмування" та "ефективності".
Принаймні в C простий, ефективний спосіб буде більш очевидним, а спокуса побудувати піраміди менш міцною.