Все хорошие ответы.
Я бы только добавил «минимизировать структуру данных». Это может быть даже проще в C, потому что если C ++ - это «C с классами», ООП пытается побудить вас взять каждое существительное / глагол в своей голове и превратить его в класс / метод. Это может быть очень расточительным.
Например, предположим, что у вас есть массив значений температуры в определенные моменты времени, и вы хотите отобразить их в виде линейной диаграммы в Windows. В Windows есть сообщение PAINT, и когда вы его получите, вы можете в цикле пройти по массиву, выполняя функции LineTo, масштабируя данные по мере продвижения, чтобы преобразовать их в координаты пикселей.
Что я видел слишком много раз, так это то, что поскольку диаграмма состоит из точек и линий, люди будут создавать структуру данных, состоящую из точечных объектов и линейных объектов, каждый из которых может выполнять DrawMyself, а затем сделать это постоянным, исходя из теории, что эта каким-то образом «более эффективен», или что им, возможно, придется иметь возможность наводить указатель мыши на части диаграммы и отображать данные в числовом виде, поэтому они встраивают методы в объекты, чтобы справиться с этим, и это, конечно, включает создание и удаление еще большего количества объектов.
Таким образом, вы получаете огромное количество кода, который настолько удобочитаем, что просто тратит 90% своего времени на управление объектами.
Все это делается во имя «хорошей практики программирования» и «эффективности».
По крайней мере, в C простой и эффективный способ будет более очевидным, а искушение построить пирамиды менее сильным.