Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 4, 2014 19:47:35

PanovSergey
От: Екатеринбург
Зарегистрирован: 2013-12-29
Сообщения: 269
Репутация: +  19  -
Профиль   Адрес электронной почты  

Перекрёстный импорт

А да забыл, поправить тесты чтобы работали корректно с новым кодом.

Отредактировано PanovSergey (Фев. 4, 2014 19:47:50)

Офлайн

#2 Фев. 4, 2014 20:02:29

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Перекрёстный импорт

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


Офлайн

#3 Фев. 4, 2014 20:29:52

PanovSergey
От: Екатеринбург
Зарегистрирован: 2013-12-29
Сообщения: 269
Репутация: +  19  -
Профиль   Адрес электронной почты  

Перекрёстный импорт



Попробую объяснить

В этом коде явно напрашивается дополнительный класс отвечающий за функциональность коллекции, т.е методы: добавить в коллекцию коллекционера, удалить автомобиль, проверить есть ли автомобиль у кого то бы то ни было, нет ли дублирующих записей. И т.д. Очевидно что нужен еще один класс. отвечающий за все это. Тогда классы коллекционер и авто смогут сосредоточиться на специфичных для них свойствах, например, ну скажем членская карточка коллекционера или размер шин для авто. Что это дает, во первых классы будут меньше позволит их лучше понимать. Дальше Большую гибкость например т.к коллекционер не будет имеет прямой связи с Авто. Соответственно его можно использовать совершенно отдельно. Без Авто и связей с ними. Как то так.

Если код не полный, то не факт, что его не должно быть там.
Где написано что код не полный? Написано “Прошу простить, если “это” больно читать.” о чем топикстартер честно предупредил. Я же писал кривой и не рабочий. А по сути видно ошибка проектирования отсюда и циклический импорт.

Офлайн

#4 Фев. 5, 2014 07:29:10

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Перекрёстный импорт

PanovSergey
Где написано что код не полный?
Я этого не утверждал. Если он полный, то ТС, наверное, просто поместил бы эти ~50 строк в один модуль.
PanovSergey
А по сути видно ошибка проектирования отсюда и циклический импорт.
Собственно, то, что я пытался донести - взаимные импорты не являются ошибкой проектирования в общем случае.

Отредактировано sergeek (Фев. 5, 2014 07:29:59)

Офлайн

#5 Фев. 5, 2014 09:38:08

Tropick
Зарегистрирован: 2014-01-31
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Перекрёстный импорт

версия 2.7.1. Я так понял, в питоне нет места соотношению один класс - один файл? А код, между прочим, хоть и кривой, но рабочий. Сделал одним файлом - стало тру!

UDP:На самом деле, код я действительно не дописал! И надо было это указать!

Отредактировано Tropick (Фев. 5, 2014 09:48:40)

Офлайн

#6 Фев. 5, 2014 10:05:28

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Перекрёстный импорт

Tropick
зачем себя утруждать ведь так приятно побыть немного в роли Шерлока

Офлайн

#7 Фев. 5, 2014 14:19:18

PanovSergey
От: Екатеринбург
Зарегистрирован: 2013-12-29
Сообщения: 269
Репутация: +  19  -
Профиль   Адрес электронной почты  

Перекрёстный импорт

Собственно, то, что я пытался донести - взаимные импорты не являются ошибкой проектирования в общем случае.
Так скажем есть паттерны, а есть антипаттерны которые работают в разных случаях У циклических импортов есть существенный минус, когда вам понадобится этот модуль + еще какой нибудь, не известно когда вы огребете еще один цикл, и тогда единственным выходом будет делать локальный импорт ибо разруливать связи будет поздно А когда на каждый чих в коде надо делать импорт начинается жесть

Сделал одним файлом - стало тру!
Как вариант. Но лучше было сделать модулями. Меньше связность.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version