[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Поставьте на путь истинный)
Страницы: 1, 2, 3, 4
Ron
Цитата (twin @ 26.05.2016 - 21:23)
С чего нужно начинать?

С разработки архитектуры БД. Если это дейстивтельно заказ, а не 3 строки.

Цитата (twin @ 26.05.2016 - 21:23)
Ему нужно, чтобы работало. Сейчас. Быстро. Дешево.

Вот как раз ровно для этого! ) Я надергаю сервисов из других проектов и соберу заказчику его ТЗ процентов на 70, за пару дней. А для того, чтобы сервисы за собой не тащили километровую мотню, нужна хорошая архитектура проекта, слабосвязанная.

Цитата (twin @ 26.05.2016 - 21:23)
Можно провести хронометраж рефакторинга любого кода

Сам факт рефакторинга (пардон) уже говорит об архитектурных ошибках. =)
Цитата (twin @ 26.05.2016 - 21:23)
всё это чушь и обычеая перестраховка.

Только если взят в реализацию антипаттерн "излишняя гибкость". Там он не один, скорее это группа.

Пять уровней абстракции позволяют хорошо разделить контексты и обеспечить полиморфизм - залог гибкости и расширяемости системы. Вот они:
1. Контроллеры
2. Модели (в понимании объектов, содержащих свойства сущности. И их правила валидации)
3. Слой сервисов. То место где пишется бизнес-логика.
4. Слой работы с БД. Просто набор методов с запросами. (getUserInfo() ну и так дальше).
5. Уровень представления. Обеспечивает абстракцию над схемами вывода (шаблонизаторы, генераторы PDF, упаковка в JSON и т.д.)

Еще есть служебный слой, хотя его можно отнести к ядру фреймворка. DI, SL, обработчики запросов, утилитные классы - всё то, что и называется фреймворком, собственно говоря.

Что здесь лишнее?

twin
Цитата (Ron @ 26.05.2016 - 20:13)
Сам факт рефакторинга (пардон) уже говорит об архитектурных ошибках. =)

Да ладно biggrin.gif
Это тоже твое частное мнение. А вот допустим Фаулер говорил, что код нуждается в рефакторинге уже после написания первой строчки. И есть даже схема разработки через рефакторинг. И даже название есть. "Эволюционное проектирование". О каких ошибках архитектуры ты говоришь?

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

Цитата (Ron @ 26.05.2016 - 20:13)
Что здесь лишнее?
Ну наверное для тебя ничего, раз тебе так удобно. Вопрос не в том, что лишнее. Вопрос в том, что это теория. Теоретически, теория и практика неразделимы. На практике все в точности до наоборот.

Вопрос в том, что это не серебряная пуля. А просто привычная тебе схема. С кучей изъянов, если рассматривать с другой колокольни.

Мне не понятно, почему бизнес-логика должна находиться в сервисах. И совершенно не понятно, на кой выделять отдельно
Цитата (Ron @ 26.05.2016 - 20:13)
Слой работы с БД.
Но это тоже мое частное мнение. Я не собираюсь сейчас разбирать эту схему. Я говорю только об одном. Попытки унифицировать приложение (не фреймворк), сделать его гибким и расширяемым, полиморфным, как ты говоришь, это в большинстве случаев никому не нужное и никогда не востребованное усложнение на самом деле. Хотя в теории кажется все гладко. smile.gif

По мне так удобнее, когда код легко поддается рефакторингу, а не расширяемости. Ибо расширение влечет за собой увеличение и усложнение кода. А рефактоинг как раз наоборот - упрощение и уменьшение объемов. Ибо то, что не нужно - безжалостно выкидывается. Когда нужно - добавляется. А не плодятся веревки наследований, делегирования, декорирования и прочей лабуды.

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

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

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

user posted image
bestxp
user posted image

итак посмотрим что тут у нас такое твориться smile.gif
почитаем ваши холиварчики
Ron
В игру уже вступила серебряная пуля. Кончится все как обычно, незыблемой и простой истиной, типа "код надо писать с умом".

Цитата (twin @ 27.05.2016 - 08:27)
Теоретически, теория и практика неразделимы. На практике все в точности до наоборот.

Это как так? То есть практика никогда не совпадает с теорией? )))

Теперь о рефакторинге. Это не добавление нового функционала и не исправление старой бизнес-логики. Рефакторинг есть переписывание кода без изменений ТЗ, скажем так. На кой ляд может понадобится рефакторинг если нет архитектурных ошибок?

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


Цитата (twin @ 27.05.2016 - 08:27)
А рефактоинг как раз наоборот - упрощение и уменьшение объемов.

Ну только если рефакторить говнокод. В других случаях уменьшение объемов всегда ведет к усложнению.

Цитата (twin @ 27.05.2016 - 08:27)
И есть даже схема разработки через рефакторинг. И даже название есть. "Эволюционное проектирование".

Ссылку на определение в википедии, пожалуйста. ))

Ricco381
Всем спасибо за помощь!
twin
Цитата (Ron @ 27.05.2016 - 18:14)
Кончится все как обычно, незыблемой и простой истиной, типа "код надо писать с умом".

Немного не так. Не просто с умом, а так, как удобно тебе. И никому иначе. Об этом и шла речь. Тебе удобно писать как в симфони - твое право. Но это никакая не общая практика. Это частная практика, не более того.

Цитата (Ron @ 27.05.2016 - 18:14)
Это как так? То есть практика никогда не совпадает с теорией?
Очень часто не совпадает. Тем более теорий куча, у каждого своя. А на практике это не всегда оптимально и вообще применимо.

Цитата (Ron @ 27.05.2016 - 18:14)
Рефакторинг есть переписывание кода без изменений ТЗ, скажем так.
Ладно, согласен. Определение не совсем уместное. Я просто не знаю определения, обратного расширемости. Рефакторинг более-менее подходит, так как это не наращивание функционала, а внутреннее изменение системы.

Цитата (Ricco381 @ 27.05.2016 - 22:37)
На кой ляд может понадобится рефакторинг если нет архитектурных ошибок?
На тод ляд, что архитектура может (и очень часто) изменяется даже в процессе разработки. Я же написал:
Цитата
Потому что довольно часто хотелки заказчика меняются даже в процессе разработки, не говоря уже о дальнейшей поддержке.
Ты сидишь, греешь голову, как вписать в систему какой-то функционал, а пока голова дымится и время тратится, заказчик вдруг решает, что ему больше не нужны красные линии. Вернее нужны, но две из них зеленым цветом, а одна в виде котенка.
Цитата (Ron @ 27.05.2016 - 18:14)
Ну только если рефакторить говнокод. В других случаях уменьшение объемов всегда ведет к усложнению.
Офигенный вывод. Ну во первых, все равно получится говнокод. Как бы ты не пыжился, как бы не называл красивыми словечками типа "пять слоев абстракции", "полиморфизм" и прочая, в итоге код будет красив только для тебя. Любой другой разрабочик обязательно найдет подванивающие места и заявит - "я бы руки отрывал!" И будет прав. Ибо читай п.1.

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

Ну тогда я не знаю.

Вот что Боб Мартин сказал по поводу предварительного программирования:
Цитата
не стоит сушить голову над вопросом, как сделать дизайн максимально простым. В конце концов, позже вы сможете (и должны, и будете) заняться рефакторингом. В конце работы над проектом желание делать рефакторинг гораздо важнее, чем точное понимание того, какое решение является самым простым.



Цитата (Ron @ 27.05.2016 - 18:14)
Ссылку на определение в википедии, пожалуйста. ))
Причем тут википедия? Просто ссылку могу дать. Изучай.

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

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

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

user posted image
Быстрый ответ:

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