Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Подскажите по проектировке таблиц БД.   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.8 MB
Время: 0.063 c
15-1351768641
brother
2012-11-01 15:17
2013.03.22
Анимация в Excel часть 2


15-1331479236
Sergey Masloff
2012-03-11 19:20
2013.03.22
Пишу из горящего танка. Накрылся HDD. Кто виноват и что делать


15-1334739336
oldman
2012-04-18 12:55
2013.03.22
Забыл решение...


2-1344085484
MS Access
2012-08-04 17:04
2013.03.22
Сортировка по части поля


2-1332577830
Pcrepair
2012-03-24 12:30
2013.03.22
TStringList и перевод символов в нижний регистр