Когда мы узнаем, что класс становится слишком много? - PullRequest
1 голос
/ 25 марта 2010

Я начинаю учить класс на PHP. Исходя из моего опыта работы с другими языками, я могу сказать, что класс отличается от функции. Итак, как мы узнаем, что наш класс начинает становиться слишком большим и слишком важным, и как мы минимизируем его влияние?


РЕДАКТИРОВАТЬ: Вопрос в том, как определить тип проблемы класса письма. Лично. Я ожидаю ответа на основе опыта.

Ответы [ 6 ]

2 голосов
/ 25 марта 2010

Опишите, что делает ваш класс. Если вы используете слово «и» в описании, это делает слишком много. Класс должен сделать одну вещь. То же самое касается функций.

2 голосов
/ 25 марта 2010

Класс «слишком много», когда вы начинаете искать фрагмент кода в этом классе. Вы знаете, что это должно быть там, но вы продолжаете прокручивать код класса. Это сильный признак того, что этот класс делает «слишком много».

То же самое, кстати. идет на функции. Если вы ищете свои функции, у вас их «слишком много» в одном месте.

2 голосов
/ 25 марта 2010

Функция должна использоваться, когда у вас есть код, который можно вызывать несколько раз из нескольких разных мест вашего приложения, чтобы избежать копирования кода.

Для представления сущности следует использовать класс:

  • данные что-то
  • и методы (поведения) , которые можно применить к этим данным

Нет реального понятия слишком много : важно то, что класс содержит то, что делает сущность ; ни больше, ни меньше.

1 голос
/ 25 марта 2010

По вашему сообщению я полагаю, что вы, вероятно, используете классы в качестве хранилища функций без реальной реализации между ними. (Я могу ошибаться, извините, если я просто делаю поспешные выводы)

Классы чрезвычайно полезны и являются основой ООП.

Используя крайне оскорбительную аналогию:

Представьте себе что-то вроде PaperSheet.

PaperSheet имеет такие свойства, как размер, цвет, форма, материал.

Вы можете делать что-то с листом бумаги, например, что-то написать, сложить в оригами (= P) и т. Д.

Итак, используя язык программирования:

Папский лист - это класс

Размер, Цвет, Форма, Материал - переменные, свойства класса PaperSheet

Write_Something_In_It, Origami_It - функции этого класса

Чтобы выполнить Write_Something_In_It, вам просто нужно предоставить текст, но для выполнения Origami_It вам нужно будет предоставить больше инструкций, поскольку создание Лебедя отличается от создания Жабы.

ТАК, кодирование это будет примерно так:

<?
   class PaperSheet {
        var $size;
        var $color;
        var $material;
        var $shape;

        function Write_Something_In_It($text) {
            /// Some Code
        }
        function Origami_It($OrigamiShape) {
            if ( $OrigamiShape < $this->$shape ) {
                          echo "You can do the origami";
                  } else {
                          echo "You can't do the origami";
            }

        }
    }
?>

Итак, класс PaperSheet определяет, что такое лист бумаги и что вы можете с ним делать. А поскольку в вашем офисе много одинакового листа бумаги, каждый раз, когда вы берете лист бумаги из стопки, вы «создаете» новый объект класса PaperSheet.

Вы даже можете создать 100 объектов PaperSheet (конечно, с разными именами) и сохранить их в шкафу (массиве).

Теперь переменные, которые вы видите выше, должны иметь смысл только в контексте PaperSheet и должны использоваться только в контексте класса PaperSheet.

Smae выполняет функции.

Если у вас есть другие классы, например Table, которые также имеют размер и цвет, то не имеет смысла, если они имеют размер листа A4.

И вы не должны иметь возможность оригами за столом (хотя, если бы вы могли, это было бы здорово).

Таким образом, в OOPL классы чрезвычайно полезны, поскольку они не только переносят связывающий код, поскольку они предоставляют более интуитивно понятный способ его использования.

Надеюсь, это поможет

1 голос
/ 25 марта 2010

Обычно функция используется для уменьшения избыточности данных. Пока ваш класс объединяет все ваши функции в одну, а также защищает ваши данные и другие функции, которые могут использоваться только их собственными объектами класса.

1 голос
/ 25 марта 2010

Я не совсем понимаю, что вы подразумеваете под «быть слишком много и слишком важно, и как мы минимизируем его влияние». Объектно-ориентированное программирование - это парадигма, возникшая потому, что это более естественный способ думать и организовывать решения наборов проблем, чем просто функции, работающие с данными. Поскольку это более естественный способ думать о большинстве проблем, реальный вопрос должен заключаться в том, «как мы можем сказать, когда мы не используем объектную ориентацию эффективно, и реорганизовать наш код для улучшения нашего решения?»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...