Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизПодскажите по проектировке таблиц БД. Найти похожие ветки
← →
Ega23 © (2012-10-01 17:40) [120]
> property Foo: TFoo read SetFooEx write Create;
> ваще крышу сорвет :)
Ну да.
TSomeClass = class
private
procedure Create(Value: TFoo); overload;
public
constructor SetFoo;
class procedure Create; overload;
property Foo: TFoo read GetFoo write Create;
end;
Что-то типа этого... :)))
← →
vuk © (2012-10-01 18:19) [121]to AV © (01.10.12 17:30) [119]:
> а еще можно в стиле "define True = False" написать property
> Foo: TFoo read SetFooEx write Create;ваще крышу сорвет :
> )
Тока последовательность перепутана. Сначала - крышу, и только потом уже - написать.
← →
asail © (2012-10-01 21:40) [122]
> Ega23 © (01.10.12 16:25) [117]
> Delphi 2010, никаких варнингов:
Это потому, что ты смухлевал... Убери вызов неиспользуемых геттера и сеттера из конструктора и будет тебе счастие! :)
Кстати, так это напоминает индусскую попытку от этих самых варнингов избавиться. Я такое уже видел, только там компактней записали - в одну строчку: SetSomething(GetSomething). :)
> AV © (01.10.12 17:30) [119]
> вот, даже в "тестовом" примере asail попался на невнимательность
> :)
В чем конкретно "попался"?
← →
Ega23 © (2012-10-01 22:38) [123]
> Это потому, что ты смухлевал... Убери вызов неиспользуемых
> геттера и сеттера из конструктора и будет тебе счастие!
> :)
Я не "смухлевал", а показал пример кода, в котором геттер и сеттер были обозваны не так, как привычно.
Естественно кода в этом классе было больше и естественно данные методы использовались.
← →
Ega23 © (2012-10-01 23:12) [124]
> Убери вызов неиспользуемых геттера и сеттера из конструктора
> и будет тебе счастие! :)
Ну и если уж на то пошло, то, во-первых, они вовсе не геттер и сеттер, а во-вторых - их достаточно в public перенести.
← →
asail © (2012-10-01 23:20) [125]
> Ega23 © (01.10.12 22:38) [123]
> показал пример кода, в котором геттер и сеттер были обозваны
> не так, как привычно
Это понятно.
> естественно данные методы использовались
А вот это уже нет. Из примера не видно. Отсюда и моя ремарка про варнинги. И всего делов.
> Ega23 © (01.10.12 23:12) [124]
> Ну и если уж на то пошло
В-третьих, они могли оказаться геттером и сеттором для какого-то другого свойтства. А можно еще и в-четвертых и в-пятых придумать... Только зачем? :)
← →
Ega23 © (2012-10-02 00:48) [126]
> А вот это уже нет. Из примера не видно.
Кому надо - тот увидел.
← →
AV © (2012-10-02 08:45) [127]
> Отсюда и моя ремарка про варнинги.
> В чем конкретно "попался"?
Да нет там варгнингов, и быть не может
Методы названы в пределах правил
А попался в том, что подумал про варнинги, тк. невнимательно пробежал по названиям, типа, сокрытие произойдет, наверное, подумал.
← →
AV © (2012-10-02 08:56) [128]Кстати по сабжу.. А не так все просто оказалось :) Автор хитер :)
я сделал эмуляцию, в реляциях, получилось довольно плохо.
← →
Компромисс © (2012-10-02 09:43) [129]
> Тупо традиция, не более того.
Нет, это не традиция, а следствие того, что английский не только язык международного общения, но и язык большинства языков программирования (извините за тавтологию) и даже родной язык наиболее продвинутых программистов (во всяком случае, в прошлом).
В последнем случае действительно можно написать: тупо родной язык Вирта, Страуструпа, Ричи и т.д.
← →
Компромисс © (2012-10-02 09:47) [130]Да уж, вот я написал про родной язык, а потом решил-таки проверить...
Вирт - швейцарец, Страуструп - датчанин...
← →
Ega23 © (2012-10-02 10:06) [131]Да и Ритчи наверняка не ариец...
← →
asail © (2012-10-02 14:33) [132]
> AV © (02.10.12 08:45) [127]
> Да нет там варгнингов, и быть не может
Может. См. ниже...
> Методы названы в пределах правил
Хто бы спорил... Тут вопросов нет.
> А попался в том, что подумал про варнинги, тк. невнимательно
> пробежал по названиям, типа, сокрытие произойдет, наверное,
> подумал.
А вот тут ошибаешься. Сокрытие тут не причем. Я про другой варнинг говорил - о неиспользуемом privet методе. Вот, Олег понял, потому и добавил вызов этих самых методов в конструкторе в своем следующем посте...
← →
Ega23 © (2012-10-02 14:52) [133]
> Вот, Олег понял, потому и добавил вызов этих самых методов
> в конструкторе в своем следующем посте...
Олег понял, что кое-кому заняться нечем, кроме придирок к возможным варнингам вообще не компилируемого кода.
Как-то так.
← →
asail © (2012-10-02 14:56) [134]
> Ega23 © (02.10.12 14:52) [133]
> Олег понял, что кое-кому заняться нечем, кроме придирок
Да где ж ты там придирки-то увидел?
← →
Ega23 © (2012-10-02 14:58) [135]
> Да где ж ты там придирки-то увидел?
А где ты там увидел варнинги?
← →
asail © (2012-10-02 16:06) [136]
> Ega23 © (02.10.12 14:58) [135]
Я в приведенном тобой примере увидел следующее:
1. Для свойства Foo были назначенны сеттер и геттер SetFooEx и GetFooEx.
2. Учитывая, что более привычные SetFoo и GetFoo остались в коде, я предположил, что они просто были заменены теми, что Ex.
3. Соответственно, можно было предположить, что старые методы перестали использоваться.
4. И, соответственно, должен был быть варнинг о двух не использующихся приват-методах.
Понятно, что все могло быть и не совсем так, но мне приведенный выше сценарий показался наиболее логичным.
Особенно, учитывая, что я такое в реале видел в исполнении индусов. И заглушили они там эти варнинги именно тем самым способом, что и у тебя в [117] - бесполезным вызовом в конструкторе... :)
← →
Ega23 © (2012-10-02 16:26) [137]
> Понятно, что все могло быть и не совсем так, но мне приведенный
> выше сценарий показался наиболее логичным.
Если бы ты прочитал то, что написано после этого кода, то не строил бы предположений.
Эмуляция в конструкторе - мне просто лень было писать код.
← →
asail © (2012-10-02 16:32) [138]
> Ega23 © (02.10.12 16:26) [137]
> Если бы ты прочитал то, что написано после этого кода, то
> не строил бы предположений.
А я прочитал. И фраза о том, что отладчик не заходит в SetFoo и GetFoo только укрепила мое предположение, что они не используются...
> Эмуляция в конструкторе - мне просто лень было писать код
Да я понял. Ты этим хотел сказать, что варнинга может и не быть. Согласен. При определенных условиях - может не быть.
← →
Ega23 © (2012-10-02 16:41) [139]
> И фраза о том, что отладчик не заходит в SetFoo и GetFoo
> только укрепила мое предположение, что они не используются.
Они - используются. Если тебе так стрёмнор - перенеси их в паблик и успокойся уже.
← →
asail © (2012-10-02 17:35) [140]
> Ega23 © (02.10.12 16:41) [139]
> Они - используются.
В таком случае, вопрос закрыт. Варнингов не будет.
> перенеси их в паблик
Зачем дурное советуешь, а? :)
← →
Ega23 © (2012-10-02 17:40) [141]
> Зачем дурное советуешь, а?
Обоснуй.
← →
asail © (2012-10-02 19:06) [142]
> Обоснуй.
А нафига они в паблике? Давай я немного перефразирую этот вопрос - а нафига эти два метода были вообще внесены в твой тестовый пример? С какой целью? Я так понимаю, чтоб запутать где чей геттер/сеттер... А если бы они были бы в паблике, то пример стал бы гораздо более прозрачным, и тебе бы не пришлось "Интуитивно искать геттер и сеттер с именем GetFoo и SetFoo". Сразу бы наткнулся на Ех... Бо, геттеры и сеттеры обычно в паблик не пихают... Ну, разве только в случае класса, реализующего интерфейс.
← →
Ega23 © (2012-10-02 19:31) [143]Начнём с конца.
> Ну, разве только в случае класса, реализующего интерфейс.
Какая разница, куда это дело пихать? Хоть в приват, хочть в паблик, ты не с классом а с интерфейсом работаешь.
> Бо, геттеры и сеттеры обычно в паблик не пихают
Ключевое слово - обычно. У меня же рассматривался не обычный пример. Мне никто не мешает обозвать геттер именем SaveToStream, а процедуру сериализации - GetItem.
Вообще никто (ну если я не в команде работаю). Как хочу, так и обзываю.
Где это дело будет стоять - опять же мои половые проблемы. Возможно я понятия не имею про инкапсуляцию, я вообще сторонник максимально открытого кода и у меня все поля и методы - в published сидят :) .
Но вот тому, кто потом такой код разбирать будет, я не позавидую.
> Давай я немного перефразирую этот вопрос - а нафига эти
> два метода были вообще внесены в твой тестовый пример?
Ты издеваешься? Я просто устал уже объяснять. Это не тестовый пример. Это вообще набросок маленькой части кода, с которой я столкнулся. Где метод с привычным именем для свойства Items GetItem выполнял не помню уже что. А реальный геттер свойства Items был GetChild (вроде).
> Я так понимаю, чтоб запутать где чей геттер/сеттер...
Не так понимаешь. Впрочем я уже выше всё написал. Кому надо - тот понял.
← →
asail © (2012-10-02 20:11) [144]
> Ega23 © (02.10.12 19:31) [143]
Я уже писал - согласен, что варнинга может и не быть. В том виде, в котором ты его привел, он должен был быть. Телепатор пошел по наиболее простому и очевидному пути (см [136] и [138])... Потом ты говоришь, что там все не так просто было, как в приведенном куске кода. Ну да, тогда все что угодно может быть - и варнинги, и ошибки компиляции, и ни того и ни другого.
Чего взъелся-то? :)
← →
MonoLife © (2012-10-03 03:54) [145]
> AV © (02.10.12 08:56) [128]
расскажешь?
← →
BiN © (2012-10-03 16:50) [146]По сабжу:
Задача проектирования хранилища для произвольной таксономии не очень хорошо согласуется с реляционной моделью. Может быть стоит смотреть в сторону графоописывающих СУБД типа HyperGraphDB?
Правда, нам в свое время пришлось отказаться от гиперграфа.
← →
MonoLife © (2012-10-03 17:07) [147]
> не очень хорошо согласуется с реляционной моделью
Видимо, да..
Страницы: 1 2 3 4 вся ветка
Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.78 MB
Время: 0.082 c