Все хорошие ответы.
Я бы добавил только «минимизировать структуру данных». Это может быть даже проще в C, потому что если C++ является «C с классами», OOP пытается побудить вас принять каждое существительное/глагол в вашей голове и превратить его в класс/метод. Это может быть очень расточительным.
Например, предположим, что у вас есть массив показаний температуры в моменты времени, и вы хотите отображать их в виде линейной диаграммы в Windows. У Windows есть сообщение PAINT, и когда вы его получите, вы можете прокручивать массив, используя функции LineTo, масштабируя данные по мере того, как вы конвертируете их в пиксельные координаты.
То, что я видел слишком много раз, так как диаграмма состоит из точек и линий, люди будут создавать структуру данных, состоящую из точечных объектов и объектов линии, каждый из которых способен DrawMyself, а затем сделать это постоянным, на теория, что это как-то «более эффективно» или что они могут, возможно, быть в состоянии мыши над частями диаграммы и отображать данные численно, поэтому они строят методы в объектах, чтобы справиться с этим, и что , конечно, включает в себя создание и удаление еще большего количества объектов.
Таким образом, вы получаете огромное количество кода, который является настолько читаемым и просто тратит 90% времени на управление объектами.
Все это делается во имя «хорошей практики программирования» и «эффективности».
По крайней мере, в C простой, эффективный способ будет более очевидным, а соблазн построить пирамиды менее сильными.
Философия Unix очень полезна для организации крупных проектов: [http://www.faqs.org/docs /artu/ch01s06.html](http://www.faqs.org/docs/artu/ch01s06.html) – newDelete