|
03.06.2008, 15:55 | #1 |
Участник
|
Цитата:
Написано "который веберет" Кто выберет? Пользователь? Как он выберет? По названию метода? А пользователю что-нибудь говорит название метода? Т.е. на самом деле варианта два: 1. машиноориентированный: Заставлять пользователя выбирать из названий методов. Никаких хелпов, подсказок, описаний. Если пользователю что-то непонятно, то он должен лезть в код. Т.е. этот подход рассчитан на программиста, а не на пользователя. 2. человекоориентированный: сделать обертку над методами, чтобы дать описания, инструкции, хелпы, подсказки и прочую мутотень. Скорее всего, описания должны быть не на программистком матерном, а на пользовательском языке - языке предметной области. Если все равно делается обертка, то поставленная в исходном сообщении задача НЕ ИМЕЕТ практического смысла. В обертке все равно будет switch/case по заранее предусмотренным пунктам. Да, конечно, если программист захочет добавить функционал, то в первом случае он должен добавить всего лишь один метод, а во втором - расширить обертку. Но это только кажется. Поскольку в первом случае "настраивать" систему сможет только програмист. Поэтому в первом случае программист делает никому не нужную работу - вместо того, чтобы просто запрограммировать выбор в коде, он делает никому не нужный интерфейс, которым сможет воспользоваться только он сам (и то только в первое время - потом забудет как это работает и все равно полезет в код по новой). |
|
03.06.2008, 19:12 | #2 |
Участник
|
Цитата:
На самом деле, вариант один: программистский! Поскольку все-равно, рано или поздно, но программисту придется лезть в код, чтобы понять, "как оно тикает". Всякие там "человекоориентированные" настройки - это кажущаяся автоматизация. Количество разных птичек и галочек в Axapte просто безумное. Ни один человек не в состоянии их всех упомнить. Вот и получается такое "гуано". Птичек уж больно много . А если еще вспомнить про текучку кадров, изменение ТЗ в процессе разработки, постянные авралы и т.д. и т.п., то ... Нет, лучше не вспоминать Собственно, написание "человекоориентированного" интерфейса задача сопоставимая с написанием подробной справки по данному функционалу. Сопоставимая по результату. Хотя "настоящие программисты", конечно, не пишут не то, что справку, а даже комментарии в коде Я бы рассмотрел задачу написание ОДНОГО метода, но который возвращает разные значения в зависимости от переданных параметров. Ну, или метод-диспетчер (класс-диспетчер), который вызывает соответствующие методы через switch/case. А в качестве параметра использовать BaseEnum, который "человеческим" языком объясняет какой метод надо вызывать. Чем проще функционал, тем тебе же потом будет легче. Кто же еще снова полезет ковырятся в этом коде |
|
03.06.2008, 20:20 | #3 |
NavAx
|
Цитата:
Сергей как раз говорит, что лучше захардкодить все реально существующие варианты, чем ваять очередное "универсальное решение" на все случаи жизни. Мне недавно пришлось столкнуться с настройкой, в которой нужно выбрать класс, который будет производить рассчет. Ни консультанту ни программисту от таких решений не легче. Консультант все равно до конца не понимает, чем один класс от другого отличается. А разработчику совсем беда, дебажить рассчет, который эти классы использует, практически не реально. И даже писатель стоящих скилзов не получил. Писать такие модификации не сложно, гордиться здесь нечем
__________________
Isn't it nice when things just work? |
|
03.06.2008, 21:00 | #4 |
Участник
|
Так я с этим и не спорю. Я "прицепился" к делению интерфейса на "машино-" и "человеко-" ориентированный в том понимании, как это описал Сергей. Как мне кажется, разница между ними в такой постановке весьма условная.
|
|
03.06.2008, 23:48 | #5 |
Участник
|
Я и не говорил, что стандартная Аксапта - идеал человекоориентированного подхода. И российская, и международная.
Цитата:
Но они так по-дурацки расставлены Цитата:
Написание человекоориентированного интерфейса - самая простая задача, если понять что же человек на самом деле хочет. Просто решайте ЕГО проблемы, а не свои собственные. Может быть, не спорю. |
|
04.06.2008, 09:09 | #6 |
Участник
|
|
|
03.06.2008, 23:50 | #7 |
Участник
|
Цитата:
Уровень желчи от этого резко поднимается... |
|
04.06.2008, 07:25 | #8 |
Мрачный тип
|
Цитата:
А потом при появлении нового варианта перетачивать на (N+1)-угольное, то бишь допрограммируя ? Цитата:
Цитата:
Дебажить беда ? Дебажится аки "отче наш", единственная проблема навскидку видится в невозможности увидеть внутреннюю структуру объекта нашего класса, создаваемого через абстрактный объект, в области его жизни, однако при вызове любых методов оного - все как на ладони внутри этих методов. Ежели есть еще какие подводные камни - поведайте, буду весьма благодарен, особенно если на проекте в аттачменте приведете примеры таких проблем. Цитата:
Спорить можно долго, но давайте озадачимся вопросом - зачем они вообще были сделаны в системе, эти возможность и доступность вызова метода класса по имени для разработчика ? Атавизм это или возможность расширения ?
__________________
Мы летаем, кружимся, нагоняем ужасы ... Последний раз редактировалось TasmanianDevil; 04.06.2008 в 07:33. Причина: XPO-шку забыл вклеить |
|
04.06.2008, 09:34 | #9 |
Злыдни
|
Цитата:
2. Невозможностью использования перекрестных ссылок В принципе, еще куча мелких проблем. Для знакомства со всеми ними достаточно плотно поработать с модулем "Расчеты с персоналом", функционалом счетчиков, например. Дебажить... Да, только и остается, что дебажить - втрое больше времени занимает, но ничего другого нам не оставили. |
|
04.06.2008, 10:16 | #10 |
Мрачный тип
|
Цитата:
Про перекрестные спасибо - совсем про них забыл что-то я. В любом случае конечного вопроса не снимает - зачем сделана такая возможность ? Я лично склоняюсь к варианту, что сие все-таки не атавизм, а при должном уровне исполнителей и контроля за ними - один из возможных путей построения всяких удобностей.
__________________
Мы летаем, кружимся, нагоняем ужасы ... Последний раз редактировалось TasmanianDevil; 04.06.2008 в 10:28. |
|
04.06.2008, 10:55 | #11 |
Участник
|
Удобностей для кого?
Можно привести примеры удобностей? |
|
04.06.2008, 10:54 | #12 |
Участник
|
Цитата:
Цитата:
Сообщение от mazzy
Да, конечно, если программист захочет добавить функционал, то в первом случае он должен добавить всего лишь один метод, а во втором - расширить обертку. Но это только кажется. Поскольку в первом случае "настраивать" систему сможет только програмист. Поэтому в первом случае программист делает никому не нужную работу - вместо того, чтобы просто запрограммировать выбор в коде, он делает никому не нужный интерфейс, которым сможет воспользоваться только он сам (и то только в первое время - потом забудет как это работает и все равно полезет в код по новой).
|
|
04.06.2008, 13:30 | #13 |
NavAx
|
Цитата:
2. Т.к. перекрестные порушены, совсем не весело вносить существенные изменения в такой механизм. Т.к. механизм искуственно усложнен + не работают проверки сигнатур, любые изменения могут привести к неожиданным эффектам. 3. Если писатель допустил ошибку, найти ее и исправить крайне тяжело. 4. Рушится сама прадигма ООП. Такие конструкции даже на функциональное программирование не тянут, это больше похоже на использование GOTO. Цитата:
Цитата:
Я не против обобщений и универсальности как таковых. Я против использования классов Dict... в бизнес-логике.
__________________
Isn't it nice when things just work? |
|
|
За это сообщение автора поблагодарили: Yprit (1), petr (1). |
04.06.2008, 14:54 | #14 |
Мрачный тип
|
Цитата:
В бизнес-логике, действительно, по-большому счету игра свеч вряд ли будет стоить при использовании Dict-семейства ...
__________________
Мы летаем, кружимся, нагоняем ужасы ... Последний раз редактировалось TasmanianDevil; 04.06.2008 в 14:56. |
|
|
За это сообщение автора поблагодарили: macklakov (1). |
Теги |
display метод |
|
Похожие темы | ||||
Тема | Ответов | |||
Вызов display метода | 4 | |||
Не копирует из display-метода в буфер обмена | 6 | |||
кэширование display метода | 6 | |||
Можно ли задать Caption для display-метода? | 6 | |||
edit и display методы | 4 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|