Вопрос №50242 от пользователя Павел Павлов в уроке «Уровневое проектирование», курс «Python: Абстракция с помощью данных»

Павел Павлов

Иногда так бывает, что я пишу решение. а потом понимаю что решение учителя это вообще не то что я представлял... https://ru.hexlet.io/code_reviews/350336 Я писал с той логикой, что каждая функция должна производить какое то полезное действие, а в решении учителя эти функции ничего не делают кроме как распаковывают то что запаковала первая функция, и вся "работа" происходит в конце. Подскажите, зачем так усложнять?))) А то я и в своем решении растянул дальше некуда, лишь бы как то логично заполнить абстракцию.

4 0

Станислав Дзисяк

Приветствую, Павел!

Каждая из функций должна выполнять свою конкретную задачу. То что вы называете распаковкой, это и есть задача этих функций (селекторы) - получить из ранее созданного прямоугольника: точку, высоту, длину.

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

В вашем случае функция get_start_point извлекает координаты из точки и создают новую точку, такую же. В чем смыл данной операции. Также стоит обратить внимание на то что функции get_width, get_height исходя из именования должны возвращать длину и высоту, а возвращают точки, это неожиданное поведение для данных функций и оно вводит в заблуждение. В итоге если например понадобится получить высоту прямоугольника или длину, её придётся заново вычислять, так как абстракция прямоугольник внутри содержит точки.

0

Павел Павлов

Станислав Дзисяк, Ну так у нас же и так есть длина и высота, которую мы получили в самом начале аргументами функции. Весь вопрос только в том, зачем мы получаем аргумент, прячем его в словарь, другой функцией достаем из словаря то же самое что только что запаковали первой функцией, а третьей функцией все считаем? Я догадываюсь что в каких то задачах по другому не обойтись, но тут в заблуждение ввело количество этих шагов, хотя душа требует сделать все в одной функции)))

0

Станислав Дзисяк

Приветствую, Павел!

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

Весь вопрос только в том, зачем мы получаем аргумент, прячем его в словарь, другой функцией достаем из словаря то же самое что только что запаковали первой функцией, а третьей функцией все считаем

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

0

Павел Павлов

Вас понял, спасибо за объяснение!)

0

Есть вопрос или хотите участвовать в обсуждении?

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг»

Рекомендуемые программы

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

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
27 октября 8 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
27 октября 8 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
27 октября 8 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
27 октября 8 месяцев
Иконка программы Верстальщик
Профессия
Вёрстка с использованием последних стандартов CSS
в любое время 5 месяцев
Иконка программы Java-разработчик
Профессия
Разработка приложений на языке Java
27 октября 10 месяцев
Иконка программы Разработчик на Ruby on Rails
Профессия
Новый
Создает веб-приложения со скоростью света
27 октября 5 месяцев