Советы по планированию переписывания большого проекта PHP?

13

Я решил полностью переписать PHP-фреймворк (с использованием MVC), над которым я работал много лет. До сих пор моя проблема заключалась в том, что я просто придумывал идеи, добавлял их в Trac как билеты и добавлял их позже - не беспокоясь о дизайне самой платформы. Со временем это вызвало некоторые проблемы, и я думаю, что переписывание было бы полезно, однако я не уверен, с чего начать с его планирования - я знаю, что не хочу использовать Trac, и я знаю, что мне нужно больше, чем просто билеты и вехи - но что еще мне нужно?

Я действительно хочу тщательно спланировать это переписывание, я хочу детализировать каждую функцию, которую я хочу, куда она пойдет и как она будет соединяться с любой другой частью - но у меня нет опыта с этим уровнем планирования. Любой совет? Какие программы помогут? Я устал от Трэка, мне это никогда не нравилось.

Я знаю, что мне нужен проектный документ, но есть ли какой-то определенный макет, которому я должен следовать? Мне также понадобится отслеживание ошибок, билеты, вехи и т. Д., Но кроме Trac я тоже не знаю, что для этого хорошо. Я уверен, что мне нужно больше, но я понятия не имею, что, поэтому любая помощь будет оценена.

Джон
источник
почему вы хотите переписать это? Почему бы не проводить рефакторинг в тех местах, которые нуждаются в улучшении? Когда вы переписываете что-то с нуля, скорее всего, вы устраняете старые проблемы для новых.
@ Гордон, может быть, это так ужасно написано, что переписать его лучше, чем рефакторинг.
правостороннее
Переписывать всегда сложнее, чем кажется, и я научился этому нелегко. О, хорошо, на этот раз я знаю, что я делаю, так что это займет вдвое больше времени (потом это займет больше времени, чем оригинал, потому что вы слишком
сильно

Ответы:

7

Ниже приведены некоторые вещи, которые я делаю при разработке большого проекта:

1 - Я использую инструмент планирования, такой как OpenProj, и добавляю все функции, которые я хочу включить в качестве задачи. Например, сейчас я работаю над функцией, позволяющей моим пользователям автоматически входить в систему после регистрации на моем сайте. У меня в плане есть задача типа «функция-аутологин».

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

3 - Я широко использую Git. Каждая функция - это ветка. После завершения каждой функции я объединяю ее с веткой разработки и создаю новую ветку для следующей функции.

4 - Если я нахожу ошибку в программном обеспечении, я создаю небольшую ветку git, чтобы исправить ее и объединить обратно после ее устранения. Я проверяю, обновляю ли я ветку разработки и мою текущую ветку функций, над которой я работаю. Кстати, ошибка становится еще одной задачей в моем плане OpenProj. Что-то вроде "ошибка-неправильный адрес". И когда я вставляю его, все другие функции возвращаются на временную шкалу.

5 - Пока я занимаюсь разработкой, если я думаю о новой функции, я просто включаю ее в план, где, как мне кажется, она будет наилучшим образом соответствовать и снова корректировать график.

Надеюсь, это поможет. Похоже, у вас впереди захватывающий проект. Удачи!

jdias
источник
10

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

NWS
источник
3
Кроме того, подумайте, что существующие фреймворки могут лучше подходить, чем создание еще одной фреймворк одноразового использования.
С.Лотт
1
@ S.Lott - что плохого в создании одноразового фреймворка, если он приспособлен для такого одноразового использования лучше, чем любой другой?
Аноним
1
@Chris Bridgett: Мир, возможно, не нуждается в еще одной узкоспециализированной структуре. Это может быть "привлекательной неприятностью". Забавная трата времени. Часто существующие фреймворки выполняют свою работу так же хорошо. «Адаптация» в рамках специального назначения часто происходит из-за непонимания устоявшейся существующей структуры. Часто существующие платформы более безопасны, надежны и быстрее. Часто существующие фреймворки уже отлажены. Часто существующие структуры лучше понимаются другими членами команды.
С.Лотт
@ S.Lott: Я пишу это для нескольких сайтов, которыми я владею, и его дизайн настроен так, как никакой другой фреймворк. Я также не планирую выпускать это на некоторое время, если вообще когда-либо. Re: TheLQ: Это была одна из моих первых мыслей, однако ни один другой веб-язык не имеет такой возможности, как PHP, кроме .NET. Было бы предпочтительнее использовать Python, однако его настройка на серверах cPanel (что, к сожалению, составляет большую часть мира веб-хостинга) - это боль.
Джон
1
@ S.Lott Я читал о Symfony, CakePHP и CodeIgniter с момента публикации, и первое, что мешает мне их использовать, - это то, что все они слепо придерживаются MVC и игнорируют возможность повторного использования. Мой текущий (и будущий, если я переписываю) дизайн - это MVC в одной папке (папка 'module'), с представлениями там, какими хочет пользователь (Named example.module.view.php), а также темами папка, в которой дизайнеры могут создавать свои собственные темы, которые переопределяют существующие представления. Это очень важно для меня, и ни одна из основных платформ, кажется, не делает это без большого взлома - это беспокоит меня.
Джон
10

Я бы предложил вместо этого сильно рефакторинг

Проблема, которую вы ожидаете здесь:

Я действительно хочу тщательно спланировать это переписывание, я хочу детализировать каждую функцию, которую я хочу, куда она пойдет и как она будет соединяться с любой другой частью - но у меня нет опыта с этим уровнем планирования. Любой совет? Какие программы помогут? Я устал от Трэка, мне это никогда не нравилось.

очень сложный В основном это модель Водопада со всем его безобразием. Вот некоторые анекдотические свидетельства о проблемах с подходом «великого переписывания», который приходит к выводу: вы, вероятно, не будете правильно предвидеть проблемы и в итоге получите еще один беспорядок, который хотите переписать с нуля. Не потому, что ты плохой, а потому, что невозможно сделать что-то большое правильно за один выстрел.

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

Например: вы упоминаете, у вас нет MVC, но вы хотите. В качестве первого шага вы можете взять один PHP-файл и, при обычном смешивании, отсортировать его так, чтобы в верхней части у вас был весь db-доступ, вычисления и т. Д., А в нижней части у вас был «шаблонизатор» ( первые билеты, для каждого файла). В качестве второго шага вы можете инкапсулировать все эти шаблонные части в функции, которые передают свои параметры. (много больше билетов). Выполнено? Поздравляю, вы закончили свой V в MVC.

keppla
источник
Я приму это во внимание, спасибо. Также, чтобы прояснить ситуацию - я использую MVC прямо сейчас.
Джон
@Jon: Да, также, мой пример предполагал типичную страницу, без фреймворка. Но я думаю, mutatis mutandis, мой ответ не отменяется этим. Пункт, который я не упомянул: рефакторинг это весело. Очень
приятно
3

Рассмотрите возможность использования существующего фреймворка. CakePHP, Zend Framework, CodeIgniter и Symfony являются известными для PHP. Если они удовлетворяют потребности сотен или тысяч пользователей, я уверен, что они могут удовлетворить ваши.

Если вы готовы изучать / использовать что-то кроме PHP - Django (Python) и Rails (Ruby) в значительной степени являются ведущими фреймворками для обычных веб-приложений.

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

Ям Маркович
источник
1

Что мне нравится, так это Redmine в качестве трекера. ИТ очень хорошо справляется с каждым из этих вопросов, и, на мой взгляд, гораздо более удобен для пользователя, чем trac.

Что касается вашего переписывания, важно сначала понять, что вы никогда не будете предвидеть каждую возможную функцию / новое расширение, поэтому постарайтесь написать свое приложение максимально гибко. Использование многих MVC-фреймворков, которые есть в PHP, может помочь в этом; однако некоторые из этих фреймворков также пробуждают вас, если ваша архитектура БД не является гибкой с самого начала (Cake). Я бы действительно сосредоточился на том, чтобы сделать вещи как можно более абстрактными, и всякий раз, когда вы видите что-то жестко запрограммированное, спросите себя, для чего оно и почему оно не может быть сохранено в БД.

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

Petrogad
источник
1

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

Но самая важная часть - иметь хорошее представление о том, что вам нужно. Сначала вы должны собрать требования для вашего приложения, чтобы иметь общее представление о том, что вы хотите, и максимально полно.

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

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

Надеюсь, это поможет


источник
Jira очень недорогая для менее чем 10 пользователей. Стоимость составляет 10 долларов, а 10 долларов идет на благотворительность.
sixtyfootersdude