[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Рефакторинг
Страницы: 1, 2, 3
paul85
Всем хорошего настроения!

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

Лично я в данный момент размышляю до какой степени следует делать код "прямолинейным". Ведь можно же совсем не париться, - пиши да пиши себе условия. Главное чтобы они друг друга не исключали. Однако тут важно не перейти на говнокод.

Ситуация:
Допустим необходимо выводить, добавлять, редактировать и удалять клиентов. По идее, добавление и редактирование - одно и тоже. Можно обойтись 3-мя функциями. Нагородить условий в функции edit, чтобы понимать когда выполнять UPDATE а когда INSERT... А можно все же разделить! Функция add отдельно, edit - отдельно.

Какой из вариантов ближе к говнокоду и почему?
T1grOK
Так можно рассуждать, когда проект небольшой. А когда проект огромен и растянут во времени, даже красивый код может превратиться во что то невообразимое. Нормальный долгосрочный проект обычно рефакторятся и вылизывается 1-2 раза за время своей разработки - этого не избежать. Потому как требования меняются, условия меняются, существующие стратегии не подходят и т.д. и т.п. Те кто работал над большими проектами, а еще если и в команде меня поймут.

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
twin
T1grOK
Цитата
Так можно рассуждать, когда проект небольшой.
Как рассуждать, я чет не понял... Человек спросил, до каких пор можно упрощать код, дабы тот не стал говнокодом. Ничего я не понял, как именно рассуждать нельзя? Упрощать нельзя? Другими словами, чем сложнее, тем лучше?

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
GET
paul85
Если условий на развлетвления edit/add не много, то мне кажется все вместе лучше. Еще где-то читал, что если кусок кода такой ветки весит больше 2кб, то только тогда его лучше в инклюд отсылать, а 2 кб это не мало.

Во-первых вся логика и проверка вместе, если вдруг в будущем какие переделки, то все в одном месте не нужно будет дергать разные файлы, сравнивать логику и т.д.
Во-вторых т.к. edit обычного много меньше add (по количеству запросов функционала скрипта имеется ввиду), то если выставить if(ADD)else(EDIT), в скорости потерь почти не будет обработчик сразу будет уходить на нужную ветку.

_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
paul85
Цитата
не нужно будет дергать разные файлы, сравнивать логику и т.д

А у меня эти функции в одном классе. Сущность "админ". Там условий получается довольно много, если одной функцией.
1. Если не прилетела форма, и не прилетел ID, то показываем форму добавления пользователя.
2. Если прилетела форма, и не прелетел ID, то делаем INSERT.
3. Если прилетел ID, но не прилетела форма, то делаем SELECT, подгружаем страницу с заполненной формой для редактирования.
4. И наконец если прилетела форма и прилетел ID, то делаем UPDATE.

Эти условия можно оптимизировать, например если ID, то редактирование или отображение. Иначе добавление или отображение. В зависимости от того летит ли POST.

Я это вижу примерно так, может быть и излишне наивно, но больше ничего в голову не приходит...

Или завести 2 функции, и тогда внутри каждой будет по одному простому условию. Собственно говоря смотреть есть или нет POST. Тут особо замудряться с дополнительными проверками ИМХО не столь важно. Все-таки закрытая часть - кто уж там будет пихать всякую гадость в URL и POST!?

Вот никак не могу определиться.

А еще есть такая привычка у многих даже уважаемых разработчиков не обращать внимание на Notice и Warning предупреждения. Они их просто конфигом отключают да и всё. И не парятся, если, скажем, идет ссылка на несуществующий элемент массива. Лично мне кажется - это в корне неправильно. Или я просто излишне щепетильно отношусь к делу, и ничего страшного в этом нет?
Michael
Цитата (paul85)
создавать простые функции с нехитрым кодом

Простоты захотелось? biggrin.gif Это вы, товарищ, не то выбрали хобби. smile.gif

И при чем тут именно "простые функции"? Ты пока на функциях пишешь? Ну тогда, насчет упрощения, пиши хотя бы так пока нет явного дубляжа. Но пойми, если получится система из 300 взаимосвязанных "простых" функций, то вся система простой может не оказаться. wink.gif

Насчет твоих операций CRUD, это не новость, автоматизация этой процедуры.
В друпале есть для похожих целей функция drupal_write_record.
А в Yii вообще классно сделано, есть Активная запись (Active Record), которая легко позволяет осуществлять CRUD операции. Yii данный код автоматически даже способен генерировать для таблиц БД.
Это как раз к вопросу о простоте.
Использовать просто и удобно.
Но чтобы этот функционал реализовать, там пришлось очень серьезно поработать и кодинг там ну совсем не простой.
Но клиентскому коду это знать не надо. Достаточно использовать открытый интерфейс этого функционала. Все это благодаря ООП, думаю ты уже знаешь про такие вещи, хотя бы чуть чуть (но подтяни, не знать про константы класса не гуд).

Цитата (paul85)
А еще есть такая привычка у многих даже уважаемых разработчиков не обращать внимание на Notice и Warning предупреждения.

Не верится. Откуда дровишки?

_____________
There never was a struggle in the soul of a good man that was not hard
paul85
Цитата
И при чем тут именно "простые функции"? Ты пока на функциях пишешь?

Не, у меня home-made "фреймворк". Просто пошел на гитхаб, взял оттуда наиболее популярный роутер. Приделал к нему диспетчер забросил в этот котел Smarty и goDB - очень даже доволен. Все потребности на сегодняшний день это чудо-юдо удовлетворяет.

Насчет готовых фреймворков: я их не совсем понимаю. Много всего требуется изучать, причем такого, что больше нигде не пригодится. Вот, например, испортится тот же Yii. Потребуется переходить, скажем, на Kohana. И снова хэлперы, обертки и т.д. но уже совершенно другие.

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

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

Цитата
но подтяни, не знать про константы класса не гуд

Честно говоря, пока не вкусил для чего нужны константы. А уж константы класса и подавно. Чем переменная хуже константы не представляю. Можно не трогать значение переменной - будет константа. Или это специально, чтобы не забыть, и потом по коду сразу было видно что к чему?

А про константы класса и вовсе неясно. Рекомендуют указывать константами, например, параметры подключения к БД. У меня сейчас есть класс config, который наследуется core. Там объявлены protected свойства того же подключения к БД. Но у констант нет области видимости. Они все как бы public.

Цитата
Не верится. Откуда дровишки?

Да есть у нас в Москве пару кренделей. Один и вовсе работал раньше в mail.ru . Пользуется среди знакомых бешеным авторитетом. Зарабатывает под 100 тысяч. Выпросил у него движок, развернул - что такое!? Одни варнинги и нотисы. Ну а тот и говорит: "а ты их задуши конфигом да и все". Мол если на все нотисы и варнинги внимание обращать, то ни одного проекта не напишешь вовремя.

Другой чел искренне считал, что DNS сервер каким-то образом влияет но то, какой контент отдает web сервер. Ну подумаешь ошибся на несколько уровней OSI - это же ведь ничего...

Invis1ble
Цитата
Зарабатывает под 100 тысяч.

ну если, не ошибаюсь, судя по последней обстановке на рынке это не слишком высокая зарплата. В любом случае, ее уровень и "авторитетность" среди знакомых не показатели квалификации wink.gif А насчет "работавшего в mail.ru" - может поэтому он там больше и не работает? biggrin.gif

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

glock18
Цитата (Invis1ble @ 3.07.2013 - 20:55)
Цитата
Зарабатывает под 100 тысяч.

ну если, не ошибаюсь, судя по последней обстановке на рынке это не слишком высокая зарплата. В любом случае, ее уровень и "авторитетность" среди знакомых не показатели квалификации wink.gif А насчет "работавшего в mail.ru" - может поэтому он там больше и не работает? biggrin.gif

вот уж верно. Уважаемые люди - это всемирно известные, скажем, если бы так делал Расмус Лердорф или какой другой создатель php, то другое дело. А перец, который типа работал в mail.ru (фирмочка кстати так себе, знакомые там поработали, и порассказывали), ну никак не авторитет wink.gif
Invis1ble
Кстати, от себя хочу добавить, что пару раз приходилось работать с кодом таких чудо-программистов. Хотелось взять и у**ть автора, т.к. дебажить код, усеянный варнингами и нотайсами, - та еще веселуха.

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

paul85
Цитата
А насчет "работавшего в mail.ru" - может поэтому он там больше и не работает?

Не исключено, кстати!

Цитата
скажем, если бы так делал Расмус Лердорф или какой другой создатель php, то другое дело.

Ну где же я возьму мнение всемирно известного человека? Я же не могу за пивком спросить: "Слушай ка, Расмус, а что делать с варнингами и нотисами?" biggrin.gif Поэтому приходится довольствоваться "авторитетными" людьми из своего, так сказать, окружения.

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

Ну как сказать! Из моих знакомых такой зарплатой не может похвастаться практически никто. Я даже, наверное, не ошибусь, если скажу, что лично не знаком с тем, кто зарабатывает больше. Слухи, да, ходят...

Однако, если 100 не слишком высокая ЗП, то что же, простите, тогда предлагают в разделе вакансии? )))
Invis1ble
дело в том, что сейчас наблюдается конкуренция среди работодателей, т.к. спрос на программистов (даже не квалифицированных) превышает предложение.
Заходим в Вакансии и видим следующую картину на первой же странице:
- Стажер IT (Москва) Зп. 15000 - 25000
- готовы взять студента месячная зарплата 1600-1900 USD/month.
- Требуется программист PHP (1C Битрикс), Москва (офис) Оклад от 80 000 до 120 000 рублей всегда вовремя. [примечание от меня: зарплата адекватна требованиям]

То есть за 5 минут поиска на одной (!) странице одного (!!!) форума мы видим предложение 80-120к

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

waldicom
Цитата (Invis1ble @ 3.07.2013 - 22:08)
Хотелось взять и у**ть автора, т.к. дебажить код, усеянный варнингами и нотайсами, - та еще веселуха.

Ну ты злой smile.gif
А в чем проблема дебажить код, усеянный "варнингами и нотайсами" ? Т.е. там техническая проблема какая-то? Или религиозная?

_____________
Свои мозги еще никто не отменял.
Телепатов нету.
twin
Цитата (waldicom @ 4.07.2013 - 00:49)
Цитата (Invis1ble @ 3.07.2013 - 22:08)
Хотелось взять и у**ть автора, т.к. дебажить код, усеянный варнингами и нотайсами, - та еще веселуха.

Ну ты злой smile.gif
А в чем проблема дебажить код, усеянный "варнингами и нотайсами" ? Т.е. там техническая проблема какая-то? Или религиозная?

Психологическая. У меня по крайней мере. Когда после включения ошибок экран становится черно-белым от нотисов, меня лично это повергает в 10-минутный ступор. smile.gif

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

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Michael
Цитата (paul85)
Вот, например, испортится тот же Yii

Что значит испортиться? С этим не должно. Уже хотя бы то, что создатели анонсируют что новая версия будет быстрей - о многом говорит. Да и на новые возможности php уже давно пора переходить.
Цитата (paul85)
Честно говоря, пока не вкусил для чего нужны константы.

Для того, для чего обычные константы...
Цитата (paul85)
Рекомендуют указывать константами, например, параметры подключения к БД

Тот твой знакомый говнокодер рекомендует? smile.gif
Настройкам таким вообще то логично в конфиг массивах жить, или в xml файлах и т.д.. И не так, как у тебя захардкодено в текст класса.


_____________
There never was a struggle in the soul of a good man that was not hard
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.