LINUX.ORG.RU

Разбиение класса на несколько

 ,


1

2

Потихоньку разбираюсь с питоном и возник вопрос:

Есть один большой класс в python с кучей методов в одном файле.
Можно ли его разбить на несколько файлов (например как в c++), т.к. стало трудно в нем ориентироваться?

Либо как то отложить реализацию и объявление?

В инете ничего толкового не нашел :(

★★★★★

А ты уверен что это должен быть один класс?

MrClon ★★★★★
()
Ответ на: комментарий от Zodd

сначала определитесь - что вы хотите сделать. множественное наследование, наследование цепочкой, или еще что-то.

NiTr0 ★★★★★
()

Есть книга одного малоизвестного писателя по имени Мартин Фаулер, «Рефакторинг» называется. Там фантастика конечно, но ты попробуй.

Deleted
()
Ответ на: комментарий от NiTr0

Разбить класс ≠ смешать несколько в один. Это лишь прямой ответ на вопрос. Зачем автору такой большой класс я представляю слабо.

evilface ★★
()

Можно ли его разбить на несколько файлов (например как в c++), т.к. стало трудно в нем ориентироваться?

Либо как то отложить реализацию и объявление?

В инете ничего толкового не нашел :(

Чтобы разбить класс на несколько частей ты гуглишь в инете? Что за программисты нынче пошли.

Siado ★★★★★
()
Ответ на: комментарий от Goury

Спасибо. Похоже лучше этого варианта нет.

Zodd ★★★★★
() автор топика
Ответ на: комментарий от Siado

Плюсы более-менее я знаю. Питон немного отличается, стиль другой.

Zodd ★★★★★
() автор топика

Ту уже вроде спрашивали, но всё же спрошу ещё раз. Как насчёт декомпозиции? Ты ведь собрался через наследование организовать, верно?

P.S. Людей, которые генерируют нечто, где в одном файле 1к строк и более, надо сжигать на кострах!

Kilte ★★★★★
()

Твой редактор не умеет сворачивать блоки кода (функции/классы)?

Virtuos86 ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Возможно, но это уже звоночек, что пора что-то делать.

Kilte ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Если это один класс и ещё на питоне, то много

mashina ★★★★★
()

Chukch^WMonkey is not a reader, he is a writer.

anonymous
()
Ответ на: комментарий от Kilte

нечто, где в одном файле 1к строк и более, надо сжигать на кострах!

От того что это растащят по сотне файлов оно не перестанет быть говном.

Вообще, кмк, текущий тренд совсем другой: на каждый чих создавать новый файл, а в нём к каждой функции три десятка строчек автосгенерированной «документации», потом две строчки кода, потом отдельный файл с какими-нибудь константами, отдельный файл задаст «неймспес», потом ещё по файлу на каждый юнит-тест... И всё это ide делает автоматически. Потом без этой самой ide в коде уже не разобраться.

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

true_admin ★★★★★
()

Ну а что мешает его разбить на подклассы. Ты же код не приводишь - получаешь абстрактные отчёты, т.к. декомпозиции бывает разная.

deterok ★★★★★
()
Ответ на: комментарий от true_admin

не перестанет быть говном.

Не факт.

на каждый чих создавать новый файл...

Это тоже тот ещё идиотизим. Даже не знаю, что хуже.

Вообще, кмк, текущий тренд совсем другой

Не знаю, если с первым время от времени сталкиваюсь, то со вторым вроде пока ещё не приходилось.

Kilte ★★★★★
()
Ответ на: комментарий от Kilte

Часто решение сущность-файл правдана, что ни говори. Но вспомогательный код лучше все-таки держать подле целевого, да и модульность из виду не стоит упускать, но тут уже вопрос в том что 1 модуль = 1 экспортируемая сущность тоже часто оправдан, т.к. сущность суть апи модуля, и даже если это несколько функций, например, контекст у них один.

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

emptykiev
()
Ответ на: комментарий от emptykiev

Часто решение сущность-файл правдана, что ни говори

Почему? Нет, я конечно не против, иногда даже по-другому просто невозможно сделать (в пыхе например, где сейчас балом правит Composer и PSR-0/PSR-4), но не вижу веских причин.

1к совсем небольшой файл

1к и более. Ну и потом я упомянул, что возможно действительно так, но это всё-таки настораживает, особенно если это сплошная портянка из кода.

Kilte ★★★★★
()

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

Как правило, один класс = одна сущность. Если сущность ооочень большая, подумай, как можно её поделить, не искусственно, а исходя из предметной области.

Но вообще, проектирование иерархии - это искусство, «единственно правильных» решений тут нет, привыкай.

anonymous
()
Ответ на: комментарий от Kilte

не перестанет быть говном.

Не факт.

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

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

Ну вот есть допустим питоновский модуль на 5к строк. Удобно с такой простынёй работать? Мне например нет.

Kilte ★★★★★
()
Ответ на: комментарий от true_admin

А то, что если код представляет собой огромную лепёху дерьма и когда его разделят на кучку маленьких лепешек, они не превратятся в фиалки, это по-моему очевидно.

Kilte ★★★★★
()
Ответ на: комментарий от Kilte

его разделят на кучку маленьких лепешек

Это уже рефакторинг :)

true_admin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.