![]() |
Как не превратить код в антипаттерны?
Долго искал раздел с названием "курилка" или "обо всем", но безрезультатно.. Но вот он!)
Взявшись разбирать промисы, я обнаружил, что не знаю предела использования паттернов. То есть, есть примеры реализации шаблонов, есть статьи и книги, которые описывают и рассказывают на минимальных примерах, как оно все устроенно. Но если шаблон немного не подходит под задачу, то это означает, что нужно от него отказаться или можно его видоизменить или даже компоновать с другими шаблонами? Вот например "команда", у которой есть публичный метод execute, который во всех примерах, ничего не возвращает. А если мне нужно чтобы возвращал? Будет ли его переделывание отправлять мой код в сторону антипаттернов? И есть какие-то критерии, возможно описанные в каких-то книгах, где говорится о допустимом приделе изменения паттернов? Есть например "спецификация", паттерн, который по своей задумки возвращает только булево значение. А если взять и изменить его до возвращения всех значений. То это тоже будет не айс? |
Пиши код, чтобы было удобно и не сложно.
Комментируй слабые участки. Старайся не плодить лишние сущности, но при этом не писать всё в одном месте. Вот и всё. |
Это понятно и просто, не плодить сущности, один объект - одна обязанность, но эта дорога ведет в сторону антипаттернов. Это не имеет значения, если бы я хотел все время код только для себя писать.
Но ведь хочется ещё что-то сделать полезного, но при этом не хочется, чтобы мой код назвали кривым. Да и вообще нужно же совершенствоваться. И на сей момент мне кажется, что предел это уметь видеть грань, которая отличает паттерн от антипаттерна. Ведь это очень насущная тема. Даже если не знать об их существовании, то все равно пишешь код, который давно уже описали, структурировали и даже придумали, как его писать нельзя. И вот после всего этого хочется получить ответ, хотя бы на два заданных вопроса выше и уже исходя из ответов, начинать рисовать эту грань. |
Паттерны, это по сути просто условность (сейчас в меня палки полетят). Вы заморачиваетесь на ерунде.
|
Цитата:
Я не понимаю людей, которые не понимая важности, говорят, что это не важно, только потому, ято они сами живут без этого. Еще жаль, что вместо ответа, мне приходится слышать слова "ерунда", что приравнивает значимость моего вопроса, к ерунде! И если бы дело было только в Вас, но ведь другой посмотрит и подумает, что Вы правы! А это не только утопит мой вопрос, но и ещё отнимет у кого-то много времени. Вот скажите, Вы повторяете, как сорока, слова "читабельность кода", "время разработки"? Не обращайте внимание на слова "сорока", так-как я считаю, что Вас они не заденут, только на основе того, что меня лично, они бы не задели! И вот тут я объясню дальше - дал я Вам задание доработать код, а там сто классов и все с говорящими именами - "Зверушка", "ВсеОгороды", "Инвентарь". Вы можете сказать, что с этим делать? А вот если бы Вы знали, что этот класс Декоратор, а эти Momento и Proxy. Вы бы сразу разобрались, как устроено приложение, даже не видя самих классов. Это не читаемость свойств, это читаемость приложения. Разве это "просто ерунда"? |
Цитата:
Цитата:
Вообще, код может быть понятен как с паттернами, так и без них. Точно так же и наоборот - можно написать отвратительный код, использую паттерны. |
Какие философские беседы, если я задал ДВА КОНКРЕТНЫХ ВОПРОСА?
Философия, это Ваш "ответ" - Цитата:
Цитата:
И личный вопрос - Вы идете по улице и видете тетку с банкой для денег и картонкой "помогите котятам". Неужели Вы подойдете и будете говорить, что Вы не любите катят и она занимается ерундой? Так вот и тут нужно так же, не нравится вопрос - мимо, зачем говорить своё мнение, когда Вас не спрашиваю? Добавлено через 3 минуты Цитата:
Или Вы только другим говорите о ерунде, а сами придерживаетесь традиций? А когда нужно что-то изменить, то Вам лень спрашивать ерунду и Вы портите все так, как Вам хочется? Добавлено через 4 минуты То есть Вы осознано делаете месиво и после этого считаете, что этот, ТОЧНЫЙ вопрос является ерундой?) |
Любые паттерны - это лишь набор рекомендаций (шаблонов), самое главно понять их суть - реализации одного и того же шаблона могут быть самыми разнообразными, тем более в разных языках.
Можно писать-дописывать свои реализации, если так будет удобнее в вашем конкретном случае - главное при этом не исказить смысл до противоположного. Вернёмся к вашему вопросу о паттерне комманда - весь смысл этого паттерна - обособить действие в отдельный объект. Соответственно результат выполнения команды должен быть спрятан в этом объекте, кроме того, паттерн Команда не говорит ничего, каким должна быть эта команда - синхронная, асинхронная или ёще какая, соответственно никто не гарантирует, что execute может возвратить что-то. Чаще всего - Команда - это объект, который совершает действия над другими объектами, передаными в качестве параметров конструктора. Если вы измените это поведение - ничего страшного, но это уже будет другой паттерн. Добавлено через 3 минуты Цитата:
Добавлено через 12 минут Цитата:
|
Цитата:
Цитата:
Хотя, видимо, просто тролль. Не будем больше кормить. |
Gerbert, https://github.com/EnterpriseQuality...erpriseEdition
идеальный код - ненаписанный код |
Котяра, Спасибо!
Цитата:
этот класс имеет отношение, к тому-то и тому-то паттерну, то разобраться будет куда легче. Цитата:
illuzor, поверьте, я тоже могу говорить грубости, но не Вам. |
Gerbert, человек вам ответил, а вы сразу кидаетесь. Причём это правда. Если постоянно думать о паттернах - эффективность работы упадет в разы. Не фанатейте.
|
MikroAcse, кидаетесь Вы, а я вступил в словесную перепалку.
Правда что? То что если думать постоянно о паттернах? А кто сказал, что я ПОСТОЯННО о них думаю? Цитата:
Добавлено через 1 минуту Вам осталось сказать - "сам я пользуюсь паттернами и соблюдаю чистоту их исполнения, но посоветую обратное и вопрос ерунда". И ждать орден. |
Да уж. С Вами не о чем разговаривать. Вы умеете адекватно отвечать на вопросы и не начинать "словесную перепалку" с теми, кто Вам просто ответил?
|
Цитата:
Цитата:
Цитата:
Цитата:
И получается, что Ваш просто ответ, это вот эта непонятная фраза? Цитата:
что Вы не способны дать ответ. Просто в этот раз, было бы полезней ( мне ), если бы Вы промолчали. Вы ответа не дали, но наговорили на две страницы. И ещё меня вовлекли. |
Я ничего не наговаривал. Кажется, это Вы на каждое моё слово отвечаете несколькими предложениями.
Но я не хочу больше спорить, Вы имеете права на свою точку зрения, как и я. |
Вернёмся к паттерну Команда.
В том же as3commons.async execute возвращает любые значения http://www.as3commons.org/as3-common....html#Commands Для асинхронных команд это не имеет смысла, но для синхронных - почему бы и нет? |
Для асинхронных можно добавить метод getResult и дергать его по событию выполнения или же передавать результаты в самом объекте события.
|
Там есть события, по которым срабатывают очереди и прочее. Для шаринга результатов я обычно передаю некий общий объект Context - в который пишут/читают/изменяют все команды из очереди.
|
Цитата:
Код AS3:
|
Нет смысл в другом. Вот простейший пример
Код AS3:
- первая команда грузит xml и присваивает его полю context.xml - вторая команда парсит context.xml и создаёт value (некий сериализованный объект) - по событию комплит очереди мы просто смотрим нужное поле у контекста, на который у нас есть ссылка. |
Котяра, Спасибо! Понял.
|
| Часовой пояс GMT +4, время: 05:00. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.