Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Говнокод, как это, как не утонуть, и что делать если уже поуши

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
DlTA
Отправлено: 05 Ноября, 2011 - 18:55:55
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




не надо ссылать на этот сайт
он занимает 80% ответов в гугле при соответствующем запросе


небольшая предыстория: (Отобразить)


больше всего интересует ответ на третий и второй вопрос в названии темы.
 
 Top
Мелкий Супермодератор
Отправлено: 05 Ноября, 2011 - 20:07:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




рефакторинг и переписывание.


-----
PostgreSQL DBA
 
 Top
caballero
Отправлено: 05 Ноября, 2011 - 20:10:58
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




А как IDE может помочь? Она что думать за вас будет?


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Самогонщик
Отправлено: 05 Ноября, 2011 - 20:16:24
Post Id



Посетитель


Покинул форум
Сообщений всего: 495
Дата рег-ции: Окт. 2011  


Помог: 8 раз(а)




caballero пишет:
А как IDE может помочь? Она что думать за вас будет?
Поиск определения функций, жутко нужная вещь.

Мелкий пишет:
рефакторинг и переписывание.
Лучше ничего не придумать. Мне вот приходится заменять кусками старый код на новый, постепенно проект становится понятнее, и заменять не так сложно/страшно.

Вопрос про нехотение браться - это вообще отдельная тема, тут уже никто не поможет.
 
 Top
caballero
Отправлено: 05 Ноября, 2011 - 20:20:11
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
Поиск определения функций, жутко нужная вещь



это чисто рутинная работа которая экономит время на на качество кода никаким каком не влияет


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Champion Супермодератор
Отправлено: 05 Ноября, 2011 - 20:23:49
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




caballero пишет:
как IDE может помочь?
Более удобный поиск по файлам проектов, горячие клавиши, интеграция с SVN. Вот.

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

Есть хорошая книжка Стива Макконнелла - "Совершенный код". Мне эта книжка понравилась. Там очень хорошо расказывается о подходах к программированию, рассказывается как делать не стоит и почему, когда можно сделать рефакторинг, а когда всё же стоит переписать (не подробно, но довольно ясно).
(Добавление)
Самогонщик пишет:
Вопрос про нехотение браться - это вообще отдельная тема, тут уже никто не поможет.
Оно может возникать из-за
Champion пишет:
Если каждое изменение может привести к ошибке в самых неожиданных местах и приводит к правкам в большом количестве кода к проблеме на прямую не относящегося
Так что сокрее всего, это как раз эта тема
 
 Top
Самогонщик
Отправлено: 05 Ноября, 2011 - 20:28:59
Post Id



Посетитель


Покинул форум
Сообщений всего: 495
Дата рег-ции: Окт. 2011  


Помог: 8 раз(а)




Champion пишет:
Так что сокрее всего, это как раз эта тема
Даже в этом случае мы не сможем ему помочь Улыбка

"Перепиши с нуля" за помощь не считается.
 
 Top
Champion Супермодератор
Отправлено: 05 Ноября, 2011 - 20:31:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Это да. Но мы сможем поддержать морально в этом нелегком начинании)
 
 Top
Данил_123
Отправлено: 06 Ноября, 2011 - 00:07:02
Post Id


Участник


Покинул форум
Сообщений всего: 1026
Дата рег-ции: Июнь 2011  
Откуда: rostov


Помог: 9 раз(а)




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


-----
http://mysitecost.ru
 
 Top
Саныч
Отправлено: 06 Ноября, 2011 - 00:35:03
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




DlTA пишет:
сторонний отзыв на это все был однозначный "Говнокод" причем жуткий
Закатив глазки

DlTA, это то чудо о котором я сейчас подумал? Улыбка

(Отредактировано автором: 06 Ноября, 2011 - 00:35:32)



-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Stierus Супермодератор
Отправлено: 07 Ноября, 2011 - 09:18:31
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




Говнокод, как это, как не утонуть, и что делать если уже поуши
1. как это?
А это именно так, как вы и описали - правка 1 бага вносит 2 новых в неожиданных местах, каждое изменение - ад.

2.как не утонуть ?
Думать наперед Улыбка Лучше сейчас потратить на 20% больше времени, чем потом прийти к такой плачевной ситуации. Выделяйте (резервируйте) время на продумывание структуры новых модулей, рефакторинг ранее написанного ... говнокодить, безусловно, легче Улыбка

3. что делать если уже поуши?
А тут сложнее. Варианта 2 - либо рефакторить имеющееся, либо стирать имеющееся и писать заного. Иногда выгоднее первое, иногда второе.

ps
Если проект крупный - надо приглашать специалиста со стороны что бы навел порядок (я очень часто вижу, когда после рефакторинга люди получают такое же говно, что было и раньше ... чуть получше - потому что у человека нет опыта и знаний что бы все предусмотреть сразу)
 
My status
 Top
DlTA
Отправлено: 24 Апреля, 2013 - 10:09:32
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




время прошло, мой левел поднялся, ну не то чтоб прям все все все круто стало, но хорошая IDE вумные книги, и метры/километры переписанного/дописанного кода существенно облегчили жизнь
 
 Top
DlTA
Отправлено: 24 Апреля, 2013 - 11:16:00
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




ну и свой совет "себе" не опытному.
то что имеющееся придется переписывать это факт.

но вот к чему стремиться, и как постараться избежать:

тут как при проложении водопровода, электропроводки, и построении дорог (хотя последнее более слабая абстракция)
не надо прокладывать по прямой (или как говорит моя бабушка "навпростець") наличие мест разводки в положенных местах существенно упростит жизнь при исправлении чего либо или расширении
вот на примере анимации:
есть у нас точка А, и нужно ее соединить с точкой B
казалось бы чего проще кидаем на прямую, потом нужно соединить с точкой С, а после с D
и вот тут мы начинаем понимать что как то это все не экономно особенно если необходимо соединить отдельно В с С или D c В, получается что делаем кучу повторной работы, засоряя пространство и существенно усложняя жизнь себе или тем кто это будет обслуживать после нас
правильней было бы добавить дополнительные точки развязки обозначенные зеленым, и кинуть уже от них необходимые направления, что в будущем существенно облегчит жизнь при расширении (многогранники фиолетовые)

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

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

(Отредактировано автором: 24 Апреля, 2013 - 11:20:16)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Прочее »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB