Mike07
@Mike07

Как правильно структурировать программу?

Я самоучка, который прочитал несколько книг по программированию (Лутц, Прохоренок и т.д.) и использует его в научной работе. При написании программы у меня возник вопрос, который я не находил разобранным в книгах:
Как правильно структурировать программу? Например, я пишу приложение на PyQt, которое состоит из основного окна и дополнительных, которые открываются по необходимости. И как лучше всего оперировать такими вещами: модуль, класс и метод классса.
Теоретически, я могу написать всю программу в одном файле. Но в примерах я иногда встречаю, что часть кода выносят в один файл, часть в другой файл, а затем в основном файле (который, по сути, просто запускатор программы) просто все доп. файлы (свои собственные модули) импортируют. При этом 1 модуль может выходить менее чем на 100 строк. А бывает, наоборот, 1 файл на несколько тысяч строк.
Затем, классами оперируют тоже все по разному. Я, обычно, беру класс MainWindow и пишу все в нем, а другие классы для других окон. И так, на всю программу выходят 3-4 класса с огромным содержанием.
С методами класса все вроде проще: для каждой функции нужно создавать свой метод класса.

И такой вопрос: а как правильно строить программу? Может есть какие-то правила, которым нужно следовать при создании модулей/классов и т.д.? Или рекомендации? Или тут полная свобода и кто как хочет, тот так код и пишет?
  • Вопрос задан
  • 359 просмотров
Пригласить эксперта
Ответы на вопрос 4
GavriKos
@GavriKos
Читайте про KISS, SOLID, и сверху полирните хотя бы "совершенный код".

Но так то да, все это только РЕКОМЕНДАЦИИ. Ибо как правильно - зависит от многих факторов - от скилла, до потребностей бизнеса
Ответ написан
Комментировать
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
Использовать декомпозицию. Рисуете сначала простую схему программы: рисуете три элемента - входящие данные, программа, выходящие данные. Далее все просто: разбиваете каждый из элементов на более мелкие логические части и повторяете данную итерацию несколько раз до каких-то простых элементов. Затем группируете элементы логически начиная с нижнего уровня от простого к сложному - объекты, классы, модули и прочее. Например: раз, два.
Ответ написан
Комментировать
AlexNest
@AlexNest
Работаю с Python/Django
Может есть какие-то правила, которым нужно следовать при создании модулей/классов и т.д.?

Ну, в первую очередь - PEP8.
А так, можно ориентироваться в сторону паттерна MVC.
(Именно ориентироваться, как уже писали выше - есть ситуации, когда следует отходить от него.)
Ответ написан
Комментировать
@GineTik
В дополнение ко всем ответам могу порекомендовать посмотреть и изучить несколько архитектурных подходов(например, вот). Также можете посмотреть на паттерны.

Может есть какие-то правила, которым нужно следовать при создании модулей/классов и т.д.? Или рекомендации?

Есть стиль написания кода, для разных языков свои стили. Для c# это описано тут, для python - тут, можете погуглить code style и для других языков. Для того, что бы создавать хорошие классы, посмотрите на принципы SOLID, DRY, KISS.

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

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

Плюс побольше практики, без нее никуда!

Можете меня поправить если что не так)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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