Правила программирования на С и С++. Главы 1-6 Страница 59. Иметь слишком много уровней абстракции или инкапсуляции так же плохо, как и слишком мало
|
Страница 59 из 93 52. Иметь слишком много уровней абстракции или инкапсуляции так же плохо, как и слишком мало.
Основной смысл использования таких абстракций, как функции или символьные константы (или инкапсуляций, подобных определениям struct или class), заключается в улучшении читаемости программ. Не пользуйтесь ими просто потому, что вы можете делать это. Например, вложенные структуры в данном фрагменте не служат какой-либо полезной цели: struct tree_node; struct child_ptr { unsigned is_thread; struct tree_node *child; }; struct tree_node { struct child_ptr left, right;}; tree_node *p; if ( !p->left.am_a_thread ) p = p->left.child; Следующий код лучше читается, потому что в нем меньше точек, и легче сопровождается, так как в нем нужно отлаживать на одно определение меньше: struct tree_node { struct tree_node *left_child; unsigned left_is_thread : 1; struct tree_node *right_child; unsigned right_is_thread : 1; }; if ( !p->left_is_thread ) p = p->left_child; |