Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flasher.ru > Флейм

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 16.08.2014, 22:37
Gerbert вне форума Посмотреть профиль Найти все сообщения от Gerbert
  № 1  
Ответить с цитированием
Gerbert
Banned
[+1 06.12.14]
[+1 18.12.14]
[+1 30.12.14]

Регистрация: Aug 2014
Сообщений: 461
По умолчанию Как не превратить код в антипаттерны?

Долго искал раздел с названием "курилка" или "обо всем", но безрезультатно.. Но вот он!)

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

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

И есть какие-то критерии, возможно описанные в каких-то книгах, где говорится о допустимом приделе
изменения паттернов?

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

Старый 16.08.2014, 22:40
MikroAcse вне форума Посмотреть профиль Отправить личное сообщение для MikroAcse Найти все сообщения от MikroAcse
  № 2  
Ответить с цитированием
MikroAcse
 
Аватар для MikroAcse

Регистрация: Feb 2012
Сообщений: 1,540
Пиши код, чтобы было удобно и не сложно.
Комментируй слабые участки.
Старайся не плодить лишние сущности, но при этом не писать всё в одном месте.

Вот и всё.

Старый 16.08.2014, 22:50
Gerbert вне форума Посмотреть профиль Найти все сообщения от Gerbert
  № 3  
Ответить с цитированием
Gerbert
Banned
[+1 06.12.14]
[+1 18.12.14]
[+1 30.12.14]

Регистрация: Aug 2014
Сообщений: 461
Это понятно и просто, не плодить сущности, один объект - одна обязанность, но эта дорога ведет в сторону антипаттернов. Это не имеет значения, если бы я хотел все время код только для себя писать.
Но ведь хочется ещё что-то сделать полезного, но при этом не хочется, чтобы мой код назвали кривым.
Да и вообще нужно же совершенствоваться. И на сей момент мне кажется, что предел это уметь видеть грань, которая отличает паттерн от антипаттерна.

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

Старый 16.08.2014, 23:59
illuzor вне форума Посмотреть профиль Отправить личное сообщение для illuzor Найти все сообщения от illuzor
  № 4  
Ответить с цитированием
illuzor
 
Аватар для illuzor

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
Паттерны, это по сути просто условность (сейчас в меня палки полетят). Вы заморачиваетесь на ерунде.

Старый 17.08.2014, 00:24
Gerbert вне форума Посмотреть профиль Найти все сообщения от Gerbert
  № 5  
Ответить с цитированием
Gerbert
Banned
[+1 06.12.14]
[+1 18.12.14]
[+1 30.12.14]

Регистрация: Aug 2014
Сообщений: 461
Цитата:
Паттерны, это по сути просто условность (сейчас в меня палки полетят).
И от меня десяток!

Я не понимаю людей, которые не понимая важности, говорят, что это не важно, только потому, ято они сами живут без этого.
Еще жаль, что вместо ответа, мне приходится слышать слова "ерунда", что приравнивает значимость моего вопроса, к ерунде! И если бы дело было только в Вас, но ведь другой посмотрит и подумает, что Вы правы!
А это не только утопит мой вопрос, но и ещё отнимет у кого-то много времени.
Вот скажите, Вы повторяете, как сорока, слова "читабельность кода", "время разработки"?
Не обращайте внимание на слова "сорока", так-как я считаю, что Вас они не заденут, только на основе того, что меня лично, они бы не задели!
И вот тут я объясню дальше - дал я Вам задание доработать код, а там сто классов и все с говорящими именами - "Зверушка", "ВсеОгороды", "Инвентарь". Вы можете сказать, что с этим делать?
А вот если бы Вы знали, что этот класс Декоратор, а эти Momento и Proxy. Вы бы сразу разобрались, как устроено приложение, даже не видя самих классов. Это не читаемость свойств, это читаемость приложения. Разве это "просто ерунда"?

Старый 17.08.2014, 00:45
illuzor вне форума Посмотреть профиль Отправить личное сообщение для illuzor Найти все сообщения от illuzor
  № 6  
Ответить с цитированием
illuzor
 
Аватар для illuzor

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
Цитата:
Я не понимаю людей, которые не понимая важности, говорят, что это не важно, только потому, ято они сами живут без этого.
Я не говорил, что не пользуюсь паттернами.
Цитата:
Еще жаль, что вместо ответа, мне приходится слышать слова "ерунда"
Потому что ерунда и есть. Эти псевдо-философские беседы на пустом месте никому не нужны и ни к чему не приведут.
Вообще, код может быть понятен как с паттернами, так и без них. Точно так же и наоборот - можно написать отвратительный код, использую паттерны.

Старый 17.08.2014, 00:53
Gerbert вне форума Посмотреть профиль Найти все сообщения от Gerbert
  № 7  
Ответить с цитированием
Gerbert
Banned
[+1 06.12.14]
[+1 18.12.14]
[+1 30.12.14]

Регистрация: Aug 2014
Сообщений: 461
Какие философские беседы, если я задал ДВА КОНКРЕТНЫХ ВОПРОСА?
Философия, это Ваш "ответ" -
Цитата:
Точно так же и наоборот - можно написать отвратительный код, использую паттерны.
И именно по этому я и задал этот КОНКРЕТНЫЙ вопрос!
Цитата:
Вообще, код может быть понятен как с паттернами, так и без них.
Код без паттернов, это как разговор без предложений. Такое может быть? Хотя "ыыыть" это не предложение, но его в премер ставить не нужно.

И личный вопрос - Вы идете по улице и видете тетку с банкой для денег и картонкой "помогите котятам".
Неужели Вы подойдете и будете говорить, что Вы не любите катят и она занимается ерундой?
Так вот и тут нужно так же, не нравится вопрос - мимо, зачем говорить своё мнение, когда Вас не спрашиваю?

Добавлено через 3 минуты
Цитата:
Я не говорил, что не пользуюсь паттернами.
И у Вас одиночка создается во всех классах, где к нему нужно обратится?
Или Вы только другим говорите о ерунде, а сами придерживаетесь традиций?
А когда нужно что-то изменить, то Вам лень спрашивать ерунду и Вы портите все так, как Вам хочется?

Добавлено через 4 минуты
То есть Вы осознано делаете месиво и после этого считаете, что этот, ТОЧНЫЙ вопрос является ерундой?)

Старый 17.08.2014, 01:34
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 8  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Любые паттерны - это лишь набор рекомендаций (шаблонов), самое главно понять их суть - реализации одного и того же шаблона могут быть самыми разнообразными, тем более в разных языках.
Можно писать-дописывать свои реализации, если так будет удобнее в вашем конкретном случае - главное при этом не исказить смысл до противоположного.
Вернёмся к вашему вопросу о паттерне комманда - весь смысл этого паттерна - обособить действие в отдельный объект. Соответственно результат выполнения команды должен быть спрятан в этом объекте, кроме того, паттерн Команда не говорит ничего, каким должна быть эта команда - синхронная, асинхронная или ёще какая, соответственно никто не гарантирует, что execute может возвратить что-то.
Чаще всего - Команда - это объект, который совершает действия над другими объектами, передаными в качестве параметров конструктора.
Если вы измените это поведение - ничего страшного, но это уже будет другой паттерн.

Добавлено через 3 минуты
Цитата:
Но если шаблон немного не подходит под задачу, то это означает, что нужно от него отказаться или можно его видоизменить или даже компоновать с другими шаблонами?
Этот подход в корне неверен. Нельзя просто так взять и впихнуть конкретный паттерн в невпихуемое. Именно для задачи мы выбираем подходящий шаблон или пишем свой велосипед и никак иначе.

Добавлено через 12 минут
Цитата:
А вот если бы Вы знали, что этот класс Декоратор, а эти Momento и Proxy.
Это очень плохие имена, которые всё равно не внесут ясности. Называть имена по использующимся в них паттернам - упячка, т.к. один и тот же класс может быть одновременно как Декоратором, так и Контроллером, и даже, одновременно с этим, Видом, смотря с какой точки зрения на него посмотреть.
__________________
Отряд Котовскага


Последний раз редактировалось Котяра; 17.08.2014 в 01:52.
Старый 17.08.2014, 01:59
illuzor вне форума Посмотреть профиль Отправить личное сообщение для illuzor Найти все сообщения от illuzor
  № 9  
Ответить с цитированием
illuzor
 
Аватар для illuzor

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
Цитата:
То есть Вы осознано делаете месиво и после этого считаете, что этот, ТОЧНЫЙ вопрос является ерундой?
Экстрасенс на форуме! Знает всё о моём коде, даже не видя его. Славься-славься... Простите.
Цитата:
Код без паттернов, это как разговор без предложений.
Паттерновый фанатик что ли? Аккуратней с этим.
Хотя, видимо, просто тролль. Не будем больше кормить.

Старый 17.08.2014, 02:22
nubideus вне форума Посмотреть профиль Отправить личное сообщение для nubideus Найти все сообщения от nubideus
  № 10  
Ответить с цитированием
nubideus

Регистрация: Jan 2013
Сообщений: 322
Gerbert, https://github.com/EnterpriseQuality...erpriseEdition
идеальный код - ненаписанный код

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:26.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 00:26.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.