|
5 / 5 / 0
Регистрация: 27.08.2012
Сообщений: 153
|
|
Проектирование проекта. Как разделить его на классы20.12.2013, 10:32. Показов 5419. Ответов 40
Метки нет (Все метки)
Здравствуйте.
Я проектирую один проект и не знаю, как разделить классы. Например, должна быть регистрация, аутентификация и "забыли пароль?" Лучше разделить на 3 класса соответственно или лучше как-то по-другому? Спасибо.
0
|
|
| 20.12.2013, 10:32 | |
|
Ответы с готовыми решениями:
40
ООП. Как разделить функции на классы?
|
|
91 / 91 / 23
Регистрация: 02.09.2013
Сообщений: 276
|
|
| 20.12.2013, 11:02 | |
|
Я бы в 1 запихал. И не только это. У меня эти штуки обычно лежат в классе User
0
|
|
|
177 / 125 / 28
Регистрация: 30.10.2013
Сообщений: 686
|
|
| 20.12.2013, 11:55 | |
|
1. прочитайте про SOLID
2. вникните в него 3. руководствуйтесь им а так, не задумывайтесь сильно об архитектуре, с помощью рефакторинга вы сможете изменить архитектуру. И во время наращивания функциональности вы сами будете видеть, когда нужно разделять(т.е. плодить) классы, когда наоборот удалять.
1
|
|
|
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
|
|
| 21.12.2013, 01:38 | |
|
0
|
|
|
15 / 15 / 11
Регистрация: 22.12.2013
Сообщений: 104
|
|
| 22.12.2013, 21:26 | |
|
Используйте модель MVC и иерархическую архитектуру классов. То есть у вас должен быть один основной класс, в котором будут системные ф-ции (работа с базой, управление сессиями, шаблонизатором и прочее), который вы будете наследовать всеми другими контроллерами и который будет заменять модель.
И должна быть точка входа (view-скрипт обычно), которая определяет какую страницу показать (какой контроллер вызвать, какой файл шаблонизатора отобразить). Такая модель очень гибкая и удобная. Погуглите на тему, для навигации по страницам обычно используется GET параметр 'page' к примеру. То есть любое обращение пользователя к вашему сайту должно приходить именно на этот один скрипт, который уже будет выполнять требуемые действия
0
|
|
|
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
|
|||
| 22.12.2013, 22:09 | |||
О_о марш теорию учить.
0
|
|||
|
5 / 5 / 0
Регистрация: 27.08.2012
Сообщений: 153
|
|
| 23.12.2013, 10:21 [ТС] | |
|
Василий Макогон, я уже прочитал все 5 пунктов SOLID. Еще взял несколько книг на тему проектирования и чистого кода, так что обучусь и этому, потом буду писать, а то мои программы всегда усложняются до "понимания уровень "БОГ".
0
|
|
|
15 / 15 / 11
Регистрация: 22.12.2013
Сообщений: 104
|
||
| 27.12.2013, 02:53 | ||
|
Или на этом форуме все, у кого овер 500 сообщений смотрят как на говно на тех, у кого надпись "новичек", не вникая? Когда имеется один корневой класс, в котором содержаться все системные методы (к примеру ф-я display, которая отображает выбранный шаблон с указанными данными, либо пользовательская ф-ция select для выборки из базы) это очень удобно. К тому же его можно таскать по всем проектам. В св-ва этого класса опять же можно вытаскивать из сессии информацию о текущем пользователе и еще много чего. Это называется точка входа. А теперь объясните мне почему я советую бред? Ибо используя подобную архитектуру и определенный шаблонизатор можно сделать динамическую (автообновляемую страницу) почти без всякого дополнительного обвеса к обычной.
0
|
||
|
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
|
||
| 27.12.2013, 08:24 | ||
|
0
|
||
|
15 / 15 / 11
Регистрация: 22.12.2013
Сообщений: 104
|
||
| 27.12.2013, 09:11 | ||
|
У меня в основном классе около 1200 строк, в которых все разбито на отдельные ф-ции и довольно понятно. Не думаю что если бы я разбил этот файл на еще штук 5 других, это бы улучшило читабельность (мне например проще открыть один файл большой чем постоянно переключаться по 5 разным). Приведет мне кто-то хоть один четкий аргумент минусов сбора всех основных системных ф-ций в один класс, или будем продолжать переходить на личности? Да, действительно.. хороший программист не писатель, хороший программист читатель
0
|
||
|
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
|
|
| 27.12.2013, 09:23 | |
|
0
|
|
|
15 / 15 / 11
Регистрация: 22.12.2013
Сообщений: 104
|
||
| 27.12.2013, 10:13 | ||
|
P.s. я о контроллерах вообще не говорил в своих сообщениях, это вы мне навязываете эту тему. К слову, у меня все контроллеры довольно небольшие и каждый из них соотв. определенному объекту архитектуры. К примеру для пользователей свой контроллер (добавление\удаление\редактирование), для товаров (к примеру) свой и т.д.
0
|
||
|
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
|
|||
| 27.12.2013, 10:37 | |||
|
можете вернуться к своему сообщению
0
|
|||
|
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
|
|
| 27.12.2013, 13:36 | |
|
0
|
|
|
15 / 15 / 11
Регистрация: 22.12.2013
Сообщений: 104
|
|||
| 27.12.2013, 18:13 | |||
|
Вы представили мое сообщение так, как захотелось вам. Контроллеры НЕ ЗАМЕНЯЮТ собой модель, т.к. это контроллеры, ага. Я написал о том, что родительский класс заменяет собой модель, т.к. в нем содержатся все основные методы взаимодействия с базой. (Оригинальная цитата - "который вы будете наследовать всеми другими контроллерами и который будет заменять модель") P.s. Постарайтесь не оскорблять людей, с которыми общаетесь, хотя бы и на форуме. Это не очень хорошая черта ![]() Добавлено через 4 минуты И второй - какой у вас опыт работы и должность (ну только не сильно врите, ладно?)
1
|
|||
|
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
|
|||||
| 27.12.2013, 18:58 | |||||
0
|
|||||
|
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
|
||
| 27.12.2013, 21:43 | ||
|
Вначале (ранний junior) писал без фреймворков. Потом набрался опыта и перестал делать такие глупости. Пишу на разных фреймворках (последний год на symfony). Опыт работы за деньги на PHP 5 лет. Senior developer. И зачем такие вопросы?
0
|
||
|
15 / 15 / 11
Регистрация: 22.12.2013
Сообщений: 104
|
||
| 27.12.2013, 22:48 | ||
|
Дальше много текста: Тут каждый выбирает что ему лучше и что понимать под фразой "фреймворк". Я в процессе разработки собираю базу необходимых для работы классов и вырабатываю архитектуру для них (к слову, сейчас эта база уже довольно обширна). По сути фреймворки это и есть подобные "базы классов". Но готовые решения лично мне не нравятся, т.к. я люблю понимать что происходит в данный конкретный момент времени, а не просто написать ф-цию do_all_right(); которая сделает все за меня (не в обиду пользователям фреймворков). Безусловно фреймворки так же хороши тем, что код структурирован под конкретный фреймворк и с одной стороны в нем будет проще разобраться (тому кто знает этот фреймворк), но с другой стороны, я тоже стараюсь использовать максимально понятную архитектуру (в корне - модель MVC, как и в большинстве фреймворков) и прокомментированные ф-ции\классы (doxygen). Если бы был один единственный фреймворк, который используют все и он являлся бы стандартом, то это было бы удобно. Но именно из-за их великого разнообразия и сложности некоторых из них, вероятность наговнокодить и даже не понимать этого выше, чем если не использовать фреймворки. К примеру на Zend'е нужно сделать довольно много телодвижений для того, чтобы вывести к примеру автообновляемую (я имею в виду без обновления страницы) таблицу с живым поиском\сортировкой по каждому полю и постраничной навигацией. Мои же средства позволяют сделать это (живой поиск\автообновление\навигацию) подключив один файл к статической странице и дописав в него несколько опциональных полей. (файл на стороне сервера использует те же ф-ции получения данных, которые итак пишутся для того чтобы вывести страницу и те же шаблоны, что и сервер при выводе страницы). В заключение - большинство обливает говном тех, кто не использует фреймворки именно потому, что процент говнокода очень большой среди разработчиков PHP, но это не дает вам права считать таковыми всех подряд. Я пытался использовать некоторые известные фреймворки (c Symfony к сожалению дела не имел) типа Zend, Yii для задачи описанной немного выше, но в некоторых это было сложно (в плане количества кода) а в других медленнее, чем моя обертка. Спасибо что прочитали
0
|
||
|
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
|
||||
| 27.12.2013, 22:55 | ||||
|
С опытом придет. Но этот опыт можно ускорить, если не упираться лбом, как ты.
0
|
||||
|
15 / 15 / 11
Регистрация: 22.12.2013
Сообщений: 104
|
||||
| 27.12.2013, 23:06 | ||||
|
Откуда такие выводы? Я же описал выше свою позицию. Я не трачу время, я разрабатываю проекты и одновременно с этим улучшаю и свою базу. Я смог освоить фреймворк (Zend) на достаточно далеком от дилетантского уровне, т.к. приходиться поддерживать проект на нем работающий и, хоть я и знаю этот фреймворк довольно неплохо, считаю его очень неудобным.
0
|
||||
| 27.12.2013, 23:06 | |
|
Помогаю со студенческими работами здесь
20
Проектирование проекта сервера Как вставить в UML схему классы проекта в Visual Studio Ultimate 2010
Как загрузить текстовый файл с определенной строки и разделить его на столбцы Не отрисовывается изображение, после того, как я добавил его в классы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|