Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Attributes, и их применение 
:(
    Опции темы
drkot
Дата 15.7.2014, 01:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



Собственно речь о такой вот штуке
Вещь конечно очень интересная и перспективная... но вот прикладное применение не выходит за рамки "Привет мир"...

Кто для чего использует это НоуХау?


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
CynicRus
Дата 16.7.2014, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 248
Регистрация: 31.5.2012

Репутация: нет
Всего: 5



Ну вот например, человек всё подробно расписал.
PM MAIL   Вверх
drkot
Дата 18.7.2014, 02:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



А что "человек расписал"?
Как с ними работать? Так это и в хелпе написано... описано чисто гипотетическое использование для некой абстрактной задачи...
Вопрос то "Практическое применение", полезность, незаменимость и тд.


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
PointerToNil
Дата 18.7.2014, 14:50 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата



*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 17.6.2013

Репутация: 3
Всего: 6



навскидку:
1) ORM с Code First - без атрибутов пришлось бы голову ломать над маппингом типов и заданием констрейнтов (NOT NULL, PK, FK  и т.д.), а так всё просто
2) сериализация, (своя, кастомная) - очень просто задать, что конкретное published свойство не нужно сериализовать, а конкретное не published - нужно, + прочие тонкости
3) юнит-тестирование: указать, тестить ли этот класс и как 
4) допустим, переменные/свойства будет менять пользовательский скрипт - тогда легко навесить дополнительные ограничения, допустим, задать размерность или единицы измерения, и код исполнения скрипта сможет делать проверки по типу "не складываются ли метры с килограммами или дюймами и не присваивается ли разные размерности/единицы друг другу"
5) статическое конфигурирование программы (без конфигурационных файлов/реестра), более гибкое, чем {$IFDEF ...} 
6) прочее: может оказаться полезным в иных плагинных системах, кодогенераторах, системах статического анализа кода

в общем - ничего "незаменимого", только упрощение некоторых довольно редких и специфических задач
и - "если вы задаёте такой вопрос, значит, ВАМ оно (пока) не нужно!"
PM MAIL   Вверх
Illusion Dolphin
Дата 18.7.2014, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 36
Всего: 63



Ещё как минимум:
7) Помощь для IDE для подсветки
8) Валидация на поля
9) Помечать классы или методы для их вызова, регистрации в фреймворках (не только ORM)
В общем вещь очень удобная и нужная, жаль, что так поздно о ней в делфи вспоминают, а лямбды видимо и вообще через 10 лет сделают


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
bems
Дата 22.7.2014, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



Цитата(Illusion Dolphin @  18.7.2014,  21:20 Найти цитируемый пост)
а лямбды видимо и вообще через 10 лет сделают 

анонимные методы не устраивают?


--------------------
Обижено школьников: 8
PM MAIL   Вверх
b8195108
Дата 22.7.2014, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 17.7.2011

Репутация: 2
Всего: 2



Цитата(bems @  22.7.2014,  00:25 Найти цитируемый пост)
анонимные методы не устраивают? 

я тоже за лябмды. они намного лаконичней
PM MAIL   Вверх
Illusion Dolphin
Дата 22.7.2014, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 36
Всего: 63



Цитата

анонимные методы не устраивают? 

Анонимные методы это анонимные методы, а лямбды это лямбды (да и к анонимным у меня были некоторые претензии под XE5, сейчас уже не вспомню). Конечно лямбды бы не помешали, очень мощная штука. Например, ORM на лямбдах - это намного удобней, чем сейчас можно сделать.


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
drkot
Дата 22.7.2014, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



Цитата(PointerToNil @  18.7.2014,  14:50 Найти цитируемый пост)
1) ORM с Code First - без атрибутов пришлось бы голову ломать

Можно пример из жизни? 
Цитата(PointerToNil @  18.7.2014,  14:50 Найти цитируемый пост)
2) сериализация, (своя, кастомная) - очень просто задать

Да, тут не поспоришь. Как по мне это единственное "практическое" применение. Имеется ввиду для целевого функционала, а не для отладок и танцев.
Цитата(PointerToNil @  18.7.2014,  14:50 Найти цитируемый пост)
4) допустим, переменные/свойства будет менять пользовательский скрипт

Не уверен, что эта задача именно для Delphi актуальна, куда проще тут перегрузку операторов использовать
Цитата(PointerToNil @  18.7.2014,  14:50 Найти цитируемый пост)
5) статическое конфигурирование программы (без конфигурационных файлов/реестра), более гибкое, чем {$IFDEF ...} 

Если можно подробнее. точнее "Чем лучше {$IFDEF ...}?". Как по мне это принципиально разные механизмы как по задачам так и по результату работы.

Цитата(PointerToNil @  18.7.2014,  14:50 Найти цитируемый пост)
значит, ВАМ оно (пока) не нужно

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


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
PointerToNil
Дата 22.7.2014, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 17.6.2013

Репутация: 3
Всего: 6



Цитата(drkot @  22.7.2014,  16:30 Найти цитируемый пост)
Можно пример из жизни?
пример ORM? .NET Entity Framework
дельфисты пока еще только начинают подтягиваться - http://www.devart.com/entitydac/
старые дельфовские ORMки - наверняка без использования атрибутов, есть ли в них code first - не знаю
Цитата
это единственное "практическое" применение
Illusion Dolphin     правильно вспомнил валидацию (проверку на допустимость значений свойств объектов при их вводе)
Цитата
Как по мне это принципиально разные механизмы как по задачам так и по результату работы.
правильно, отсюда и определенные преимущества одного над другим и наоборот

в целом, функциональность атрибутов почти такая же, как и у констант, но 1) в дельфях константу можно как-то "привязать" к классу или к полю/свойству, только вручную дав ей имя типа "TMyClass_MyProperty_MyAttribute" - и её значение в коде получишь, только используя этот идентификатор полностью, а наличие/значение атрибута можно проверить/получить, имея отдельно имена класса, свойства и атрибута - например, перебирая в цикле свойства класса произвольного объекта и 2) константу нельзя проверить на наличие/отсутствие - если где-то есть к ней доступ, то где-то она должна быть определена, атрибут же можно просто не задавать - в этом сходство с {$IFDEF}

Это сообщение отредактировал(а) PointerToNil - 22.7.2014, 19:28
PM MAIL   Вверх
drkot
Дата 22.7.2014, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



Цитата(PointerToNil @  22.7.2014,  18:50 Найти цитируемый пост)
пример ORM?

Шутить изволитес? Пример того как без этого ну прям ни как... 

Цитата(PointerToNil @  22.7.2014,  18:50 Найти цитируемый пост)
дельфисты пока еще только начинают подтягиваться

Нуда, нуда, все в курсе. Давайте не уходить от темы. 
Вы объясните как для танкистов, если конечно не тяжело. Типа вот три строчки при использования атрибутов и вот так без них. и сразу видно что атрибуты рулят. 
Цитата(PointerToNil @  22.7.2014,  18:50 Найти цитируемый пост)
правильно вспомнил валидацию

вот эта тема тоже на уровне лозунга... да и 
Цитата(PointerToNil @  22.7.2014,  18:50 Найти цитируемый пост)
проверку на допустимость значений свойств объектов при их вводе

вводе кем? Может при присвоении значений? А в чем выгода?

Цитата(PointerToNil @  22.7.2014,  18:50 Найти цитируемый пост)
почти такая же, как и у констант

в целом функциональность кнопки унитаза "почти такая же, как и у" любой другой кнопки.
Может функционально атрибут есть не что иное как class, ссылающийся на некоторое поле в RTTI структуре другого класса?
 
Цитата(PointerToNil @  22.7.2014,  18:50 Найти цитируемый пост)
перебирая в цикле свойства класса

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

Цитата(PointerToNil @  22.7.2014,  18:50 Найти цитируемый пост)
в этом сходство с {$IFDEF}

 smile 
Давай, бомби дальше.

Добавлено через 3 минуты и 35 секунд
Цитата(PointerToNil @  22.7.2014,  18:50 Найти цитируемый пост)
атрибут же можно просто не задавать - в этом сходство с {$IFDEF}

Вообще думаю Вам стоит создать тему "о сходстве TAttribute с {$IFDEF}" и это будет  smile 
Разумеется кратко изложить сходства и различия в первом посте.


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
PointerToNil
Дата 23.7.2014, 02:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 17.6.2013

Репутация: 3
Всего: 6



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

PM MAIL   Вверх
Illusion Dolphin
Дата 23.7.2014, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 36
Всего: 63



Точно также как делфи обходится без лямбд - можно обходиться и без атрибутов, интерфейсов, и чего тут таить, даже без классов. Да и циклы можно исключить, ведь есть goto (JMP в конце концов). А то что без этого можно обходиться никак не уменьшает тех возможностей, которые данные технологии привносят в языки.  Если вам они не нравятся - забудьте про них, пока совсем не припрёт и будет необходимо это освоить. Если надо разобраться уже сейчас, что с этим делают уже много лет другие - я могу посоветовать поискать что-то вроде с# using attributes и взглянуть на готовую экосистему с атрибутами. 

P.S. Давайте не будем вдаваться в скептицизм, ведь если это многие используют - значит зачем-то это уж точно надо ;)
P.P.S. drkot, Если хотите - могу прокомментировать по каждому вашему пункту.


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
drkot
Дата 23.7.2014, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



Цитата(PointerToNil @  23.7.2014,  02:04 Найти цитируемый пост)
никакой необходимости в атрибутах нет

необходимости конечно нет, но есть ситуации в которых их применение облегчает и упрощает подход и разумное использование целесообразно.
Цитата(PointerToNil @  23.7.2014,  02:04 Найти цитируемый пост)
ответ на Ваш основной вопрос, я считаю, уже дан

Ответ, это не всегда конкретный набор букв, зачастую это процесс. Если Вы обратите внимание на формулировку вопроса, то наверняка заметите, что вопрос открытый, и широкий. Наверняка Вам приходилось писать сочинение на тему "Как я провел лето?". Так вот это вопросы одной категории.
Если бы меня интересовало "Как использовать" или "как применить к..." то вопрос был бы сформулирован именно так, но меня интересуют сферы практического применения, и именно практического, а не теоретические книжные изыскания "о том как люминесцентная ручка молотка упрощает процесс забивания гвоздей".
Пока что реальная полезность обнаружена только при работе с файлами имеющими "человеко читаемую" структуру. И ради простоты масштабирования и изменения этой структуры можно пойти на "жертвы" в быстродействии. 
Цитата(PointerToNil @  23.7.2014,  02:04 Найти цитируемый пост)
убеждать кого-то в чем-то не вижу смысла

Убеждением занимаются компетентные органы ;) и смысла в этом действительно мало. А Вы пока что даже не удосужились аргументировать свои лозунги, а вот это уже пионерство...
Если бы Вы показали как решается та или иная задача и это оказалось бы полезно, то и убеждать бы никого не понадобилось.
А пока что Вы только провели параллель между объектной моделью скоппелированной программы и препроцессором исходного кода. 
Цитата(PointerToNil @  18.7.2014,  14:50 Найти цитируемый пост)
5) статическое конфигурирование программы (без конфигурационных файлов/реестра), более гибкое, чем {$IFDEF ...} 

и мне никак не удается понять как гибкость чертежа паровоза может быть больше (меньше) гибкости самого паровоза? и как это вообще можно сравнивать?

Цитата(Illusion Dolphin @  23.7.2014,  10:24 Найти цитируемый пост)
что-то вроде с# using attributes и взглянуть на готовую экосистему с атрибутами

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

Когда речь идет о классах, интерфейсах и прочих структурах языков высокого уровня, то их применение как минимум понятно с практической точки зрения (хотя и не обязательно).
Разве что упомянутые лямбды (рожденные к стати в скриптовых языках, и по воле маркетологов навязанные нативным) не имеют заметного практического значения. А в идеологии OP они и не уместны вовсе. 
а если исходить из
Цитата(Illusion Dolphin @  23.7.2014,  10:24 Найти цитируемый пост)
значит зачем-то это уж точно надо ;)

то и книжки про пи...сов и порно на каждой странице "точно нужно", его ведь ого го сколько...

Цитата(Illusion Dolphin @  23.7.2014,  10:24 Найти цитируемый пост)
по каждому вашему пункту

нет, так подробно не надо. Достаточно развить тему 
Цитата(Illusion Dolphin @  18.7.2014,  21:20 Найти цитируемый пост)
7) Помощь для IDE для подсветки

интересно звучит, хотелось бы узнать больше.


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
PointerToNil
Дата 23.7.2014, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 17.6.2013

Репутация: 3
Всего: 6



Цитата(drkot @  23.7.2014,  22:09 Найти цитируемый пост)
Если бы Вы показали как решается та или иная задача и это оказалось бы полезно
какая именно задача? если она не стоит, то решения рассматривать бессмысленно - одни сферы в ваккуме 
Цитата
меня интересуют сферы практического применения
эти сферы перечислены, и пока создается впечатление что лично вас они не затрагивают - какой тогда смысл в обсуждении?
Цитата
не удосужились аргументировать свои лозунги
аргументация - это и есть убеждение, а я в нем смысла не вижу
(другая версия - "защита своей точки зрения" как бы от нападения другой стороны - такой "футбол" мне тем более не нужен)
на самом деле ищущий разглядел бы в этих "лозунгах" ключевые слова для самостоятельного поиска
приводить требуемые вами примеры означало бы заниматься гуглением за вас и затем копипастингом, а это неинтересно 

и напоследок: даже в дотнете все в основном используют атрибуты в готовых решениях из фреймворка, новые сами вводят очень редко (я не вводил)
то есть, чаще эту фичу сначала задействуют библиотеко-компоненто-фреймворко-писатели (им её удобство и полезность более очевидна), а уж затем прикладным программистам приходится её понять и принять, раз уж она нужна для правильного использования ими чужого кода
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0580 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.