Традиционные HTML / CSS / JS + PHP против Flex + Java-сервлетов - немного больше - PullRequest
0 голосов
/ 10 марта 2009

Так что ситуация немного сложная. Был один аспирант, который разрабатывал это веб-приложение самостоятельно, используя Flex и JSP. Он продолжил свою карьеру и устроился на работу где-то еще. У него все еще есть доступ к приложению, и он часто поддерживает его.

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

Ни в одном из исходных кодов нет документации. Нам требуются часы и часы, чтобы просто выяснить, как все связано и согласованно работает (или не работает). Хотя мы знаем и знакомы с JSP, мы не так знакомы с Flex. Я подумал, что было бы интересно изучить новые технологии на стороне клиента, прежде чем я взялся за этот проект.

После нескольких недель изучения кода и изучения проблем я обнаружил, что даже коды Flex не организованы должным образом. Есть много жестко закодированных значений. Исходный код полностью НЕ МОДУЛЬНЫЙ и НЕ МАСШТАБИРУЕМЫЙ. Примеры или статьи, которые я читал о разработке во Flex, отличаются от того, как создается это приложение Flex.

Из-за всех этих накладных расходов, с которыми нам приходится сталкиваться, прежде чем мы начнем рассматривать настоящую проблему, мы предложили изменить все приложение на использование PHP (возможно, с использованием CakePHP ... давайте не будем обсуждать, какая среда PHP является лучше) с традиционными языками на стороне клиента - html, css, js (фреймворк jQuery).

Аспирант считает, что это плохая идея, потому что нам потребуется время, чтобы перевести новое приложение туда, где находится текущее приложение.

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

Аспирант пришел с этим утверждением, что он не видит, как PHP будет лучше, чем JSP.

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

Итак, я прошу об этом сообщество StackOverflow, потому что я знаю, что в сообществе есть люди с гораздо большим опытом, чем я, в области управления проектами, развития и образования. Что ты думаешь я должен сделать? Должен ли я продолжить проект и просто продолжить разработку в Flex / JSP? или я должен убедить, что строим все с нуля (ну, мы все равно будем использовать старую реализацию в качестве ссылки)?

Пожалуйста, помогите мне здесь. Кроме того, скажите мне, почему я должен придерживаться или изменить.

Извините за длинный пост.

Редактировать
Некоторые другие проблемы, о которых я не упомянул ...
1. По какой-то причине аспирант работал на сервере напрямую, вместо того, чтобы создавать локальное рабочее пространство или создавать сайт для тестирования / разработки. Мне не очень нравится эта идея, и когда мы пытались привнести что-то локально, она доставляла нам много проблем из-за того, что многие вещи «жестко закодированы». Иногда мы даже не знаем, откуда возникла ошибка или почему все работает не так, как на веб-сайте, потому что, очевидно, мы не знаем каждый фрагмент кода.
2. Отсутствие документа означает абсолютно отсутствие документа. Нет комментариев в коде. Никаких функциональных спецификаций (хотя, как я играю с сайтом, я нахожу основные функциональные спецификации). Нет схемы базы данных. Ничего такого. Нада. Это самая неприятная часть, потому что я всегда чувствую, что теряю время, пытаясь выяснить, что уже работает - мне нужно посмотреть, как все работает или должно работать, чтобы исправлять ошибки .. верно?

Я также хотел бы получить некоторые отзывы о технических преимуществах и недостатках использования Flex / JSP, помимо классного, необычного пользовательского интерфейса Flex.

Ответы [ 5 ]

1 голос
/ 14 марта 2009

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

Я бы предложил переписать код, но использовать ту же технологию ... либо использовать flex, либо JSP, либо сам JSP. Это позволяет вам проводить рефакторинг фрагментов существующего кода и использовать уже решенные проблемы.

Это позволяет вам переписывать фрагмент кода по частям, иметь вехи и, в конечном итоге, постепенно выводить плохой код из строя.

1 голос
/ 12 марта 2009

Без серверной части или библиотеки тегов PHP = JSP. Между этими двумя нет никакой разницы. Однако JSP обычно используется совместно с платформой промежуточного программного обеспечения (в j2ee) и библиотеками тегов, которые облегчают их чтение. Если он не используется с одним из них, то да, PHP будет заменой.

Что касается более философской проблемы переписывания. Переписывание любого веб-приложения, которое является достаточно сложным, чтобы доставить вам много проблем с пониманием исходного кода, займет у вас много времени. Подумайте 4-5 месяцев, так как вы строите с нуля. Вы, вероятно, думаете от 6 до 8 недель, вы не правы. ; -)

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

  • у вас есть 4 месяца на разработку, чтобы просто достичь функциональности?
  • код действительно так плох? Там нет инкапсуляции вообще? Не могли бы вы просто заменить некоторые ключевые части, над которыми вам нужно работать, более качественным написанным кодом? (желательно на тех же языках, что и остальные)
  • насколько вы уверены, что ваша версия на самом деле окажется лучше, чем код этого другого человека? В конце концов, вы не написали оригинал, поэтому вы не можете применить какие-либо уроки, извлеченные при его построении, к созданию последующих действий.

Прежде чем что-то выбросить (что могло бы потребовать много работы), убедитесь, что на самом деле это никогда не сработает. В противном случае вы просто настраиваетесь на большее напряжение.

0 голосов
/ 14 марта 2009

Мне кажется, что у вас есть неопытный аспирант, пишущий это приложение (он также может быть немного высокомерным).

Я бы предложил попробовать изменить приложение, а не переписать его. Попробуйте использовать текущую технологию (JSP и Flex). Вы можете работать с аспирантом или найти кого-то еще, кто имеет опыт работы с Flex / JSP, и работать вместе, чтобы убедиться, что код реорганизован соответствующим образом.

Переписывание только внесет больше ошибок и пропустит уже работающую функциональность.

Я думаю, что случилось, что аспиранту разрешили творить без какого-либо надзора (подумайте о Пизанской башне). Можно позволить творчеству развиваться, но убедитесь, что у него есть путь для подражания. В противном случае, вы всегда найдете его затопляющим.

0 голосов
/ 11 марта 2009

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

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

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

Во-первых, исправьте ошибки. Не пишите еще одну новую функцию, пока не устраните все существующие ошибки. Затем рефакторинг кода. Проверьте, чтобы убедиться, что в вашем рефакторинге не было новых ошибок.

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

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

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

Некоторые дополнительные соображения, которые вы упомянули:

Flash Player

Серьезно, почти у всех он установлен. Количество людей, которые не посещали youtube хотя бы раз или какой-либо другой сайт, который использует его, практически ничтожно мало. Вопрос здесь должен быть: был ли Flex правильным инструментом? Я видел примеры использования флэш-памяти, потому что это было известно первоначальной команде разработчиков. Старайтесь избегать ситуации, когда «когда ты молот, каждая проблема выглядит как гвоздь».

Изучение PHP лучше или изучение PHP основа

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

0 голосов
/ 10 марта 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...