Поиск лишний строчек в проекте

Adelf

Administrator
Команда форума
Духовность™
"У меня идеальный код. У других(в том числе и у Фаулера, который тоже ошибается во время рефакторинга) неправильный рефакторинг."

Мне кажется ты просто пытаешься проецировать свои фантазии на реальность. Фантазии твои таковы, что основная часть проекта - это программный код. Даже не его функционал, а просто "идеальность"(сам я не до конца представляю что ты в это понятие вкладываешь, но примерно понимаю). В реальности же программный код и, уж тем более, его красота для проекта почти неважны. Да, отмечаются такие факторы как легкость поддержки, расширения, но эти факторы далеко не на первых местах.
При разработке проекта программист должен просто выдать в срок код, реализующий четко определенный функционал. Никому не интересно насколько он офигителен. Никому не интересно, что его легко расширять. Кое-как можно еще убедить своего менеджера в необходимости этого. Клиента - почти никогда.
Ты можешь тратить месяцы на то, чтобы сделать идеальную пагинацию. В реальности 90% клиентов просто не поймут, если на это будет потрачено больше 1 дня("за эти циферки я должен оплатить туеву хучу человеко-часов?").
Очень тебе советую ознакомиться с тем, как обстоят дела в индустрии. Создание сайтов типа твоего чемоданчика - это далеко не показатель.
 

Духовность™

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

Духовность™

Продвинутый новичок
программный код и, уж тем более, его красота для проекта почти неважны
Расскажи это моим работодателям. Мы правим жуткий говнокод большого проекта в количестве 9 человек-программеров и это не предел - будут набираться ещё люди. Мы ощущаем себя Алисой в зазеркалье, ибо работаем с фанатическим неумением программировать тех, кто был до нас. Слово "Рефакторинг" наш руководитель произносит очень часто и не удивительно - без него проект загнется и очень известная компания потеряет огромные деньги.

Каждый получает не менее 60-70-80 в месяц. Че ты там говорил про человеко-часы?

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

Adelf

Administrator
Команда форума
Духовность™
Ну, возможно тебе повезло и ваш клиент готов оплачивать рефакторинг(т.е. работу над проектом без каких-то внешних результатов) отдельно. Либо ты не все рассказываешь.
Про зп ты не знаю зачем сказал. Имхо, средненькие для Москвы.
Не только в России нет культуры. Везде надо ставить грань между идеальностью кода(которой никогда не добьешься. Даже если твой код и сильно хорош, в чем я сииильно сомневаюсь, он легко станет неидеальным, если придет достаточно сильное изменение) и необходимым функционалом. Нельзя слишком заботиться о первом, в ущер второму. Это всегда губительно для бизнеса.
 

AmdY

Пью пиво
Команда форума
я СЕЙЧАС занимаюсь рефакторингом, только когда правлю баги. у меня в коде библиотек много хаков, которые не трогаются годами и на них стоят тудушки, но скорее всего я никогда не буду этот код переделывать. я поьзуюсь копипастом и у меня есть мёртвый код, который я не трогаю на случай если он понадобится: например, при просмотре новости вытаскиваются из базы 10 последних новостей той же категории, но не на каждом проекте это используется, зато я не правлю контроллер, только работаю с вьюшкой.

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

shelestov

я тут часто
Adelf
мне похер на индустрию и клиентов, мне мой идеальный код нужен для того, что бы успешно поддерживать и развивать свои проекты
Я в своих домашних мини-проектах в 1-3 тыс строк тоже могу писать "идеальный" код.
Поправлюсь. Идеальный для меня код.
 

antson

Новичок
Партнер клуба
Идеальный код он разным бывает ;)

Павел Шумил .Долг перед видом
Сестренки писали программы неправильно! Никто так программы не пишет. Ни ящеры,
ни драконы, ни люди. Программа должна быть красивой. Программа должна
быть структурной. Программа должна быть понятной и читабельной. Сестренки
не пользовались командами безусловного перехода. Пусть. Некоторые эстеты
от программирования считают, что оператор безусловного перехода - зло.
Но они не пользовались и операторами условного перехода. Сестренки не писали
подпрограмм. Они вообще не использовали 90% команд компьютера. Логическое
умножение на маску, сдвиги, логическое сложение, несколько команд арифметики
- и все! Вместе с тем, их программы обладали чудовищным быстродействием.
Программы, состоящие на 95% из таблиц адресов переходов и дешифраторов - с
таким Болан не сталкивался. Таблицы и дешифраторы. Это же надо! Сестренки
выделяли умножением на маску одним им известные битики, собирали их в слово,
сдвигом превращали это слово в адрес в таблице переходов, запихивали
полученный адрес в стек и давали команду "возврат из процедуры". По существу,
тот же самый безусловный переход по косвенному адресу, но на 8 тактов
быстрее. Ни один нормальный программист не использует ТАК команду "возврат
из процедуры". Хакеры используют. Но чтоб на этой команде строить всю
логику программы - для этого нужно быть психом или суперхакером.
Два дня Болан ползал по бесчисленным ветвям и веточкам сравнительно
небольшой программы сестренок. Потом сдался. Понять это мог только автор.
 

Adelf

Administrator
Команда форума
Цитата из свежей хабра-статьи.
У программистов свой, эгоцентрический взгляд на разработку продуктов, который, к сожалению, часто мешает увидеть свет хорошим и правильным вещам. Знание юзабилити в том числе позволяет прояснить некоторые связанные с этим «вопросы»: кто важнее, программист или пользователь (пользователь); кто виноват в том, что пользователь не может воспользоваться функцией продукта (разработчик); что важнее, хороший код или полезная функция (функция); волнует ли кого-то, как все это работает (нет, вообще нет, пока работает); интересно ли пользователям разбираться с вашей программой (нет), дурак ли пользователь (нет).
 

Духовность™

Продвинутый новичок
Причем тут вообще юзабилити? Юзабилити определяет дизайнер.

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

Духовность™

Продвинутый новичок
Духовность™
Ну, возможно тебе повезло и ваш клиент готов оплачивать рефакторинг(т.е. работу над проектом без каких-то внешних результатов) отдельно. Либо ты не все рассказываешь.
А что рассказывать? Сайт надо развивать, но он плохо написан, очень плохо. Это мешает развитию. Он тормозит и пестрит ошибками. Его писали люди, которые тоже считали, что писать красивый и понятный, безглючный код -- совсем необязательно. И теперь, спустя годы, клиент держит штат в 10 человек, что бы проект, приносящий прибыль, не умер и мог развиваться.

Везде надо ставить грань между идеальностью кода(которой никогда не добьешься
Почему не добьешься? Достаточно писать без ошибок (E_ALL), с хоть какой-нибудь архитектурой, не хардкодить, писать обильные комментарии, периодически делать рефакторинг и уделять ему хоть какое-то время. Это что, так сложно все?
 

Adelf

Administrator
Команда форума
Духовность™
Сколько процентно времени уходит на рефакторинг и на добавление функционала?
Знает ли топ-менеджмент об этой ситуации? И как относится, если знает. Это уже не ради продолжения дискуссии, а интересу моего ради.

И еще, идеальный код... он не то, чтобы недостижим. Имхо, его не надо достигать ни в одном проекте. Иначе будет пахлава-код(http://www.johndcook.com/blog/2009/07/27/baklav-code/ ). Абстракции нужно оставлять на каком-то определенном уровне. Иначе это будут гигантские напрасные труды, который нафиг не сдались этому конкретному проекту.
 

whirlwind

TDD infected, paranoid
Adelf рефакторинг это просто подготовка кода к внедрению функционала, а не абстрактное увлечение. Элементарное правило двух ударов - если пишем похожий код 2 раза, значит на третий раз пора делать рефакторинг. Если этого не делать, то граф логических переходов (любая програма - конечный автомат) возрастает в геометрической прогрессии. Каждый узел этого графа - это потенциальное место для ошибки. Элементарная математика.
 

Adelf

Administrator
Команда форума
whirlwind, я читал Фаулера :)
Цитата от Духовности(блин зачем ник в женском роде? :) )
я пишу свой код так: напишу - он работает. потом я смотрю, что не так - убираю лишнее, чищу, оптимизирую алгоритмы - это называется рефактотринг.
Как видишь, немного не то представление у него. Хотя тоже подходит под общее опеределение рефакторинга. Я лишь утверждаю, что никто нормальный не даст просто так сидеть и чистить код. Оптимизируй, если тормозит. Реорганизуй, если это необходимо для добавления функционала. Но просто так сидеть и играть в красивый код - нормальный клиент не должен это позволять.
 

whirlwind

TDD infected, paranoid
Adelf ответ на вопрос - когда делать рефакторинг лежит полностью на совести разработчика. Нетрудно догадаться, что тут все зависит от умения видеть на два шага вперед. Естественно что это зависит от опыта. Чем больше позади рефакторингов, тем дальше в будущее можно заглянуть на этапе разработки.
 

Духовность™

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

Adelf

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

weregod

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

HraKK

Мудак
Команда форума
Извините, но кроме п-ц, у меня нету другого слова.
 
Сверху