Классы по сравнению с 2D массивами

Поскольку этот вопрос задан, Amazon выпустил Step Functions ( https://aws.amazon.com/step-functions/ ).

Одним из основных принципов, лежащих в основе AWS Lambda, является то, что вы можете больше сосредоточиться на бизнес-логике и меньше на логике приложения, которая связывает все это вместе. Шаговые функции позволяют организовывать сложные взаимодействия между функциями без необходимости писать код для этого.

6
задан Tim Post 21 November 2011 в 03:53
поделиться

7 ответов

"Класс", который Вы создали выше, - то, для чего большинство людей использовало бы структуру на других языках. Я не уверен, что последствия производительности находятся в PHP, хотя я подозреваю, что инстанцирование объектов является, вероятно, более дорогостоящим здесь, если только немного.

Однако если стоимость является относительно низкой, немного легче управлять объектами, по-моему.

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

public function setWeight($weight)
{
    if($weight >= 0)
    {
        $this->weight = $weight;
    }
    else
    {
        // Handle this scenario however you like
    }
}
9
ответ дан 8 December 2019 в 05:59
поделиться

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

4
ответ дан 8 December 2019 в 05:59
поделиться

Это - скорость, о которой я думаю главным образом для чего-либо более сложного, чем, что я имею здесь, я, вероятно, пошел бы с классами, но вопрос, какова стоимость класса?

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

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

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

3
ответ дан 8 December 2019 в 05:59
поделиться

Обычно я следую этому правилу:

1) Сделайте это классом, если несколько частей Вашего приложения используют структуру данных.

2) Сделайте это 2D массивом при использовании его для быстрой обработки данных в одной части приложения.

4
ответ дан 8 December 2019 в 05:59
поделиться

Класс, который Вы имеете, не является реальным классом в терминах OO - его просто созданный для занимания места переменных экземпляра.

Это сказало - там, propably не много проблемы со скоростью - ее просто вещь стиля в Вашем примере.

Интересный бит - то, если Вы contsrtucted объект быть реальным классом "человека" - и думающий о других атрибутах и действиях, которые можно хотеть класса человека - затем, Вы заметили бы не только производительность стиля - пишущий код - но также и быстродействие.

2
ответ дан 8 December 2019 в 05:59
поделиться

Если Ваш код использует партию функций, которые воздействуют на те атрибуты (имя/высота/вес), то использование класса могло быть хорошим вариантом.

0
ответ дан 8 December 2019 в 05:59
поделиться

Teifion, если Вы используете классы в качестве простой замены для массивов, Вы нигде не близкое ООП. Сущность ООП - то, что объекты имеют знание и ответственность, могут на самом деле сделать вещи и сотрудничать с другими классами. Ваши объекты имеют знание только и не могут сделать, что-либо еще, чем неактивно существует, однако они, кажется, хорошие кандидаты на поставщиков решения для хранения данных (объекты, которые знают, как хранить/получать себя в/от базу данных).

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

0
ответ дан 8 December 2019 в 05:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: