Форум программистов, компьютерный форум, киберфорум
PHP: Фреймворки
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
Результаты опроса: Как вы поступаете в сложившейся ситуации?
Говорю клиенту, что ему проще и дешевле сделать новый сайт 10 66.67%
трачу +10050 часов на то чтобы разобраться с проектом, но все же довожу дело до логического завершения 4 26.67%
Отказываюсь от проекта после первого часа знакомства с ним 0 0%
Привлекаю к работе более опытных коллег с фриланса 1 6.67%
Голосовавшие: 15. Вы ещё не голосовали в этом опросе

 
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
53 / 28 / 13
Регистрация: 01.03.2013
Сообщений: 330

Доработка чужих проектов

27.09.2016, 07:49. Показов 3120. Ответов 20
Метки нет (Все метки)

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

Как вы поступаете с проектами на фреймворке, которые напичканы самописными костылями без единой строки какого нибудь захудалого комментария, проектами, которые никоим образом не следуют правилам для данного фреймворка и не используют стандартные методы данного фреймворка. Думаю многие с таким сталкивались, кто как поступал в таком случае?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.09.2016, 07:49
Ответы с готовыми решениями:

Разбор чужих проектов
Народ всем привет я учу front-end и сейчас изучил основы html,css,js но чтобы именно научиться верстать нужно практиковаться у меня есть...

В чем разница MFC проектов и CLI проектов?
хочется свободно использовать winApi функции т.к. мне кажется что .net в CLI/ WinForm мешает свободному использованию их. Предпочитаю...

Товары На Чужих Складах
В некоторых магазинах автозапчастей в поиске выдается не только наличие в продаже нужной детали, но и возможность её поставки через...

20
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
27.09.2016, 08:11
Выношу мозг начальнику и добиваюсь переписывания проекта с нуля)
Если это не удалось и отказаться не могу, то узнаю как это должно работать, методом тыка ищу это в проекте и дописываю свой костыль.
1
119 / 116 / 63
Регистрация: 16.09.2016
Сообщений: 354
27.09.2016, 10:03
Бывали проекты, которые нереально переписать в обозримые сроки.
Просто нужно реально оценивать объем трудозатрат и договариваться на берегу.
А "метод тыка" пока ни разу не подводил .
1
53 / 28 / 13
Регистрация: 01.03.2013
Сообщений: 330
27.09.2016, 11:10  [ТС]
Цитата Сообщение от svs171 Посмотреть сообщение
А "метод тыка" пока ни разу не подводил .
Это я так понимаю и есть умение разбираться в чужом коде, о котором так часто упоминают работодатели)
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
27.09.2016, 16:08
На самом деле первые 2 варианта подходят, но ответил на второй. Недавно было -- сказал цену заказчику, потом понял, что проще переписать, потому что доработать надо было немало.
В итоге, за изначальные 30$ переписал небольшую CRM под MVC в стиле Laravel, правда с самописными компонентами, и от Symfony немного.
1
Нет ТЗ - давай досвидания
 Аватар для BuPy7
746 / 377 / 64
Регистрация: 01.12.2011
Сообщений: 2,250
Записей в блоге: 6
02.10.2016, 20:16
Цитата Сообщение от Para bellum Посмотреть сообщение
за изначальные 30$ переписал
Я, надеюсь, это ставка за час?
0
Хитрая блондиночка $)
 Аватар для Hikari
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
02.10.2016, 20:37
Цитата Сообщение от Kenny7423 Посмотреть сообщение
Как вы поступаете с проектами на фреймворке, которые напичканы самописными костылями без единой строки какого нибудь захудалого комментария, проектами, которые никоим образом не следуют правилам для данного фреймворка и не используют стандартные методы данного фреймворка. Думаю многие с таким сталкивались, кто как поступал в таком случае?
Ну скажу из своего опыта начальника ИТ отдела. Тут есть два выхода:

1) Предлагаем более выгодные условия. Заказчик отказывается (или оставляет как резерв) от своих наработок в пользу наших. Так же предлагаем полную техподдержку. Заказчику получается выгоднее отказаться от своих наработок, если его устроит цена и миграция данных будет безболезненна. Ну или хотя бы репликация из старой системы хранения в новую.

2) В договоре с заказчиком обговариваем особые условия изучения его разработки. Заказчик дает нам больше времени на выполнение договора. Техподдержка в этом случае происходит совместно со специалистами заказчика. Риски и ответственности так же делятся (обычно ответственность мы полностью вешаем на заказчика не забыв его предупредить об этом). Как правило в таких случаях заказчику открываются доработки, поскольку он в целом и по договору проходит как участник доработки.

Остальные варианты развития диалога и проекта не дают более лучшего эффекта, поэтому их даже упоминать не стану.
1
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
02.10.2016, 21:04
Цитата Сообщение от BuPy7 Посмотреть сообщение
Я, надеюсь, это ставка за час?
И не надейтесь. Это за день-два работы, не напрягаясь особо, правда. Так предполагалось. Потом, естественно, на неделю растянул сроки, пока переделывал.
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
02.10.2016, 21:20
Цитата Сообщение от Kenny7423 Посмотреть сообщение
Как вы поступаете с проектами на фреймворке, которые напичканы самописными костылями без единой строки какого нибудь захудалого комментария, проектами, которые никоим образом не следуют правилам для данного фреймворка и не используют стандартные методы данного фреймворка. Думаю многие с таким сталкивались, кто как поступал в таком случае?
Надо понимать чужие костыли, насколько безмозглые бы они не были. Этим вы и отличаетесь от "новичков", читать и понимать код весь. Я встречал в своей жизни случаи когда начинающий кодер писал страницу кода который заменяется одной строкой. К тому-же когда ему показали эту строчку, думаете он поменял свой говнокод.
В вашем вопросе цена вопроса и готов ли клиент платить за переработку.
Хорошему программисту не сильно будет затруднительно добавить к чужому говнокоду свой работающий код.
Еще раз все решается в бабло. Я даже клиентам не говорю о качестве их кода когда клиент жмот и просит добавить определенный функционал. Ведь анализ, аналитика и выяснение узких мест это то-же работа и время за которое большинство клиентов не готовы платить
Цитата Сообщение от Para bellum Посмотреть сообщение
И не надейтесь. Это за день-два работы
Жесть пора на Upwork идти тогда
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
02.10.2016, 21:36
Цитата Сообщение от Fedor Vlasenko Посмотреть сообщение
не сильно будет затруднительно добавить к чужому говнокоду свой работающий код
Только совестно, когда осознаёшь, что можно было выполнить лучше. А к плохому коду сложно добавить качественный, как полагается. Там уж не о шаблонах проектирования думается, а о том, как в принципе можно подключить тот же autoloader Composer'а. Особенно, когда десятки точек входа в приложение.
Цитата Сообщение от Fedor Vlasenko Посмотреть сообщение
Жесть пора на Upwork идти тогда
Да, что-нибудь надо придумывать.
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
02.10.2016, 21:44
Цитата Сообщение от Para bellum Посмотреть сообщение
Только совестно, когда осознаёшь, что можно было выполнить лучше.
Я через год все равно лучше напишу
У меня есть много своих открытых проектов, так, что когда я вспоминаю про совесть я иду и их допиливаю
Цитата Сообщение от Para bellum Посмотреть сообщение
Там уж не о шаблонах проектирования думается
Изучив шаблоны проектирования вы может быть абстрагируетесь от них, не знаю тут у каждого своя кошка в голове по данному вопросу. К примеру если вы возьмете серьезную книгу по OOP , то увидите в первых страницах, что автор не против функционального и в данной книге рассматривается только OOP
0
 Аватар для BearBaloo
41 / 41 / 16
Регистрация: 04.10.2016
Сообщений: 154
04.10.2016, 09:17
Я думаю все делают следующим образом:
Предлагают переписать сайт на знакомый им фреймворк, а если заказчик упирается рогами, то тогда приходится разбираться в коде который был написан до тебя, если конечно это рентабельно.
0
14 / 50 / 3
Регистрация: 26.12.2009
Сообщений: 406
04.10.2016, 23:35
Цитата Сообщение от Kenny7423 Посмотреть сообщение
Как вы поступаете с проектами на фреймворке, которые напичканы самописными костылями без единой строки какого нибудь захудалого комментария, проектами, которые никоим образом не следуют правилам для данного фреймворка и не используют стандартные методы данного фреймворка. Думаю многие с таким сталкивались, кто как поступал в таком случае?
Как часто такое бывает?

Мне кажется, что процентов в 90.

Добавлено через 7 минут
Цитата Сообщение от Fedor Vlasenko Посмотреть сообщение
Надо понимать чужие костыли, насколько безмозглые бы они не были. Этим вы и отличаетесь от "новичков", читать и понимать код весь.
1. Манал в рот я это понимать.
2. Продвинутый отличается тем, что он такую ерунду не напишет.
3. Ерунду не стоит держать, а стоит ампутировать. Скорее всего, не пытаясь понять логику предыдущего говнокодера, если есть ТЗ.
4. Едва ли не в большинтстве запущенных случаях проще переписать все с нуля, чем мудохаться в дерьме, так как нормальный рефакторинг будет подразумевать, что все дерьмо будет выброшено.
5. На поддержку этого говнокода потратиться больше времени, чем на переписывание, так как чтение занимает чуть ли не в 10 раз больше времени, чем само написание кода.

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

Добавлено через 3 минуты
Цитата Сообщение от Para bellum Посмотреть сообщение
Там уж не о шаблонах проектирования думается
Эти шаблоны, примененные без понимания, как раз и являются одним из признаков говнокода.

Цитата Сообщение от Para bellum Посмотреть сообщение
Особенно, когда десятки точек входа в приложение.
Чем страшны 10 точек входа?
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
04.10.2016, 23:54
Цитата Сообщение от Madrid Посмотреть сообщение
1. Манал в рот я это понимать.
2. Продвинутый отличается тем, что он такую ерунду не напишет.
3. Ерунду не стоит держать, а стоит ампутировать. Скорее всего, не пытаясь понять логику предыдущего говнокодера, если есть ТЗ.
4. Едва ли не в большинтстве запущенных случаях проще переписать все с нуля, чем мудохаться в дерьме, так как нормальный рефакторинг будет подразумевать, что все дерьмо будет выброшено.
5. На поддержку этого говнокода потратиться больше времени, чем на переписывание, так как чтение занимает чуть ли не в 10 раз больше времени, чем само написание кода.
у вас мысли программиста на своей стадии и видать нет опыта работы на фрилансе
заказчик не будет вам платить за рефакторинг
фрилансеру же: сделал, бабки получил и забыл
переписать все с нуля это время и деньги, на проблемных проектах, дырявых, архитектурно и функционально спроектированных неправильных, при этом работающих вам в большинстве никто не даст деньги на рефакторинг
фрилансер может предупредить клиента и все.
А то о чем вы говорите, больше относится к новым проектам. Но часто встречается, что кто-то учится на этом проекте, соответственно и код получается ученика. Ну и работает он так-же
Цитата Сообщение от Madrid Посмотреть сообщение
Чем страшны 10 точек входа?
велосипедом
вы будете потом искать через какой задний проход к вам пришло
в идеале - одна точка входа и одна выхода( к сожалению не всегда так пишут, а все на быструю руку)
1
14 / 50 / 3
Регистрация: 26.12.2009
Сообщений: 406
05.10.2016, 10:00
Цитата Сообщение от Fedor Vlasenko Посмотреть сообщение
и видать нет опыта работы на фрилансе
На фрилансе нет. У меня свои проекты.

Цитата Сообщение от Fedor Vlasenko Посмотреть сообщение
заказчик не будет вам платить за рефакторинг
Поддержка трудноподдерживаемого кода выйдет дороже.
Жлобы этого не поймут.

Цитата Сообщение от Fedor Vlasenko Посмотреть сообщение
переписать все с нуля это время и деньги, на проблемных проектах, дырявых, архитектурно и функционально спроектированных неправильных, при этом работающих вам в большинстве никто не даст деньги на рефакторинг
Не все, только тот кусок, что просят поправить.
Возможно, у Вас случаи были не настолько запущенные.

Цитата Сообщение от Fedor Vlasenko Посмотреть сообщение
вы будете потом искать через какой задний проход к вам пришло
Какая разница:
а) зашло через index.php, а потом хрен поймешь какой контроллер взял его обрабатывать
б) зашло в четко известный скрипт, который настроен в nginx
?
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
05.10.2016, 11:51
Цитата Сообщение от Madrid Посмотреть сообщение
зашло в четко известный скрипт, который настроен в nginx
проблема в том, что вам лень прикрутить систему роутинга
это пример для php 7, в функциональном стиле
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Author - Fedor Vlasenko, vlasenkofedor@mail.ru php 7
define('METHOD', $_SERVER['REQUEST_METHOD']);
define('URI', parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
 
/**
* @param string $url
* @param array  ...$args
*/
function router($url, ...$args)
{
        (empty($args[1]) || false !== strpos(METHOD, $args[0]))
        && (URI === $url || preg_match('#^' . $url . '$#iu', URI, $match))
        && die(call_user_func_array(end($args), $match ?? []));
}
 
router('/', function ()
{
        echo 'Main Micro';
});
 
router('/article/(.*[^/])', 'GET', function (...$args)
{
        echo 'Article: ', $args[1];
});
 
header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');
echo '404';
у вас получается чтобы увидеть какой файл отрабатывает нужно лезть в конфиг nginx
не проще в одном месте роутером отрабатывать все
Роутер лежит рядом с приложением, при этом доступы к конфигам сделать недоступным для разработчиков
Все запросы окромя статики на index.php
2
14 / 50 / 3
Регистрация: 26.12.2009
Сообщений: 406
05.10.2016, 12:42
1. Да, мне лень прикручивать роутинг. Он мне не нужен. Лишнее колесо.
2. Роутинг в одном месте - в конфиге нгинкса. Я много чего могу сделать еще пока запрос не дошел на приложение.
Например проверять валидность ссылок.
В одном проекте было порядка 50% заходов по устаревшим "ссылкам". Я их обработал самим сервером.
3. Ваш роутинг понятен (кстати, мне нравится такой функциональный стиль ). Но бывают случаи, когда фиг поймешь с наскока, что и как.

Но он имеет право на жизнь, как и роутинг на веб-сервере.

Почему вы говорите, что имееет право на жизнь только один вариант: ваш?
Я сам из Украины, слегка напоминает майданутых.
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
05.10.2016, 14:37
Цитата Сообщение от Madrid Посмотреть сообщение
Я сам из Украины, слегка напоминает майданутых.
это к чему здесь
Цитата Сообщение от Madrid Посмотреть сообщение
что имееет право на жизнь только один вариант: ваш
не я могу рассказать, что нафиг вам тот nginx
Серверов на с и с++, масса(даже очень) и зачем нам php
Это говорит о проектировании структуры приложения, когда пишется структура понятная для многих. открыл роутинг который может быть описан в базе, в виде массива, json, ini, yaml файлов просмотрел куда направляется запрос и все.
Не стоит лазить по папкам на сервере. Да и не всем туда доступ нужен. А также о распространяемости и привязки.
Ваше решение привязано к nginx, а захочу на другом сервере запустить, что переписывать весь роутинг для нового сервера.
Наверное вы уже заметили гибкость и более широкие возможности при данном подходе
1
14 / 50 / 3
Регистрация: 26.12.2009
Сообщений: 406
05.10.2016, 15:53
Цитата Сообщение от Fedor Vlasenko Посмотреть сообщение
это к чему здесь
Типа пример из жизни, что не стоит впадать в крайности.
Думал, очевидный. Если нет, то забейте.

Цитата Сообщение от Fedor Vlasenko Посмотреть сообщение
не я могу рассказать, что нафиг вам тот nginx
В определенный случаях он и не нужен.

Цитата Сообщение от Fedor Vlasenko Посмотреть сообщение
открыл роутинг который может быть описан в базе
Роутинг в базе?
Хм.

Цитата Сообщение от Fedor Vlasenko Посмотреть сообщение
Не стоит лазить по папкам на сервере.
Это один файл как правило.
Для удобства можно разбивать конфиг.
Можно определенные части использовать повторно в других сайтах/локейшенах.

Цитата Сообщение от Fedor Vlasenko Посмотреть сообщение
Да и не всем туда доступ нужен. А также о распространяемости и привязки.
Ваше решение привязано к nginx, а захочу на другом сервере запустить, что переписывать весь роутинг для нового сервера.
Наверное вы уже заметили гибкость и более широкие возможности при данном подходе
Правильно, it depends.

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

А роутинг настроить - не самая сложная проблема.
Были вещи посложнее при переезде с Апача.
0
3 / 3 / 2
Регистрация: 05.01.2013
Сообщений: 264
26.10.2016, 16:56
Не вижу вообще проблемы. Может мне не такие сложные проекты попадались, хотя, когда начинаю изучать любой проект, мне кажется он ужасно непонятным, но уже через день начинаю делать первые задания, а через неделю свободно в нем разбираюсь.
Если планируется долговременное сотрудничество, то почему бы не разобраться? А если предлагают сделать что-то в сложном проекте за 500р, то смысла нет, конечно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.10.2016, 16:56
Помогаю со студенческими работами здесь

склейка чужих со своими
интересная тема - палю значит есть домен vash_domen.ru сморим проиндесированные страницы и что видим страницы доменов вашего и...

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

Завершение чужих процессов
Привет всем! Стал заниматься программированием на C# и еще совсем не много знаю. На днях возник вопрос: «Как убивать (завершать) другие...

Товары на чужих складах
В некоторых интернет-магазинах автозапчастей в поиске выдается не только наличие в продаже нужной детали, но и возможность её поставки...

Перехват чужих сообщений из Телеграмм
Доброго времени суток! Помогите в решении проблемы,есть 3 телефона (2-Андроид,1-Айфон). Велась переписка между двумя Андроидами, при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru