Правила программирования на Си и Си++



         

116. Избегайте перегрузки функций и аргументов, используемых по умолчанию - часть 2


class string

{

 // ...

public:

   print( FILE     *fp  );

   print( iostream &ios );

   print( window   &win );

я бы рекомендовал:

class string

{

// ...

public:

   print_file   ( FILE     *fp  );

   print_stream ( iostream &ios );

   print_window ( window   &win );

Еще лучше, если бы у вас был класс устройства device, который бы мог представлять типы: файловый FILE, потоковый iostream и оконный window, в зависимости от того, как он инициализируется — тогда бы вы могли реализовать единственную функцию print(), принимающую в качестве аргумента device.

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

Часть 8б. Проблемы сцепления

Концепция сцепления описана ранее в общем виде. Я также указал наиболее важное правило Си++ для сокращения числа отношений сцепления: "Все данные должны быть закрытыми". Идея минимизации связей на самом деле центральная для Си++. Вы можете возразить, что главной целью объектно-ориентированного проектирования является минимизация отношений связи посредством инкапсуляции. Этот раздел содержит специфические для Си++ правила, касающиеся связывания.




Содержание  Назад  Вперед