Перемещение системы из системы классов в формат MVC - PullRequest
1 голос
/ 28 января 2009

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

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

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

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

Спасибо.

Ответы [ 2 ]

4 голосов
/ 28 января 2009

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

Совет № 1) Если вы кодируете, если вы видите что-то не то, исправьте это. Это займет больше времени, но в конечном итоге даст вам прирост производительности, поскольку система станет более «фиксированной». Если у вас действительно нет времени, чтобы исправить это, сделайте себе одолжение и добавьте комментарий, например: получить список вещей, которые вам нужно сделать. Вы также можете дать им уровни, такие как «TODO-High», «TODO-Medium», «TODO-Low». Если вы используете Eclipse или Zend Studio for Eclipse в качестве редактора / IDE, вы можете настроить его на автоматический поиск и пометить их для вас, в Предпочтения-> Задачи.

Совет № 2) Если вы надеетесь (в конечном итоге) перейти на MVC, важно отделить HTML от логики. Это означает использование шаблонов. Эта задача может занять много времени, но как только она будет выполнена, весь ваш переход станет намного проще.

Совет № 3) Попробуйте установить соглашения. Пример: имена контроллеров и представлений должны соответствовать URL-адресу и находиться в каталогах, соответствующих URL-адресу. URL для редактирования Место 1234: / place / edit / 1234 Файл контроллера: /htdocs/sitename/controllers/placesController.php Файл шаблона: /htdocs/sitename/views/places/edit.tpl

Совет № 4) Прочтите руководства по началу работы с основными фреймворками: Zend, CakePHP, CodeIgniter / Kohana, Symfony. Посмотрите, выглядит ли один лучше другого. Спросите себя, почему вам это нравится. Будет ли это работать для вас, или вам нужно свернуть свои собственные рамки (сомнительно). Если это вообще возможно, используйте существующие рамки. Это уже проверено на ошибки сотнями или тысячами людей, и это время, которое вы сэкономите! Мне нравится Zend Framework, и он особенно хорош для таких «переходных проектов», как ваш, потому что вы можете взять его или оставить по одному. Я имею в виду, что вы можете использовать ТОЛЬКО объект Zend View или использовать только объект DbTable. Вы можете оставить столько, сколько захотите. Это означает, что вы можете постепенно переходить в Zend-World в своем собственном темпе. EZ-Components работает так же.

Совет № 5) Оберните используемые классы, расширив их. Например, я использую Zend_Acl, но на самом деле использую свой собственный класс Acl, который расширяет Zend_Acl. Это имеет два ключевых значения: а) Я могу поменять Zend_Acl на что-то другое, не меняя мой код, потому что все это относится к старому «Acl» б) я могу изменить работу Zend_Acl в соответствии с моими конкретными потребностями, потому что я могу переопределять любые методы, которые мне нравятся, в моем классе 'Acl'.

Совет № 6) Попробуйте получить бай-ин от менеджмента. Объясните им, что рефакторинг фактически сэкономит им деньги, потому что он повысит согласованность и понятность кода, что поможет снизить количество дефектов и упростит их поиск и исправление.

Совет № 7) Попробуйте почитать книги на эту тему, такие как «Рефакторинг: улучшение дизайна существующего кода» Мартина Фаулера

1 голос
/ 28 января 2009

Zend имеет хорошее соглашение об именах: http://framework.zend.com/manual/en/coding-standard.naming-conventions.html

Они добавили префикс Zend_ ко всем своим классам и таким образом избегают столкновений со сторонними классами.

По моему мнению, каждый крупный проект должен реализовывать подобное соглашение об именах, по крайней мере, для базовых классов.

...