Форум: "Потрепаться";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];
ВнизПара вопросов бывалым разработчикам Найти похожие ветки
← →
Igorek © (2004-06-23 16:21) [0]1) как вы относитесь к конструкциям
with Object1, Object2, ... do
with Object1 do
with Object2 do
...
Хороший ли это стиль? Оптимизирует ли это бинарный код?
2) как вы именуете поля в таблицах в БД? Названия полей уникальны только в пределах одной таблицы или во всей базе даных?
3) как вы решаете споры с сотоварищами по дизайну программы?
← →
Игорь Шевченко © (2004-06-23 16:24) [1]
> 1) как вы относитесь к конструкциям
> with Object1, Object2, ... do
>
> with Object1 do
> with Object2 do
Всякий овощ приносит пользу, будучи употребленным надлежащим образом в надлежащее время.
> 2) как вы именуете поля в таблицах в БД? Названия полей
> уникальны только в пределах одной таблицы или во всей базе
> даных?
В пределах таблицы
> 3) как вы решаете споры с сотоварищами по дизайну программы?
Плюсометом
← →
Reindeer Moss Eater © (2004-06-23 16:26) [2]1. Равнодушно. Плохой. Вряд ли.
2. Префиксирую двумя - тремя символами из имени таблицы. Во всей.
3. В свою пользу.
← →
Sandman25 © (2004-06-23 16:26) [3]1) Хороший. Но стараюсь не использовать вложенные with c одинаковыми классами. Типа
with DataSet1 do
Хотя иногда бывает
begin
....
with DataSet2 do
...
end;
2)уже не именую. Раньше уникальность в БД не была гарантирована
3)разговорами. Слава богу, коллеги и начальники всегда готовы обсудить и даже поменять свое мнение :)
← →
Ega23 © (2004-06-23 16:26) [4]Плюсометом
Где купить можно? Мне малая партия нужна, штук 8. С боеприпасом, конечно.
← →
Игорь Шевченко © (2004-06-23 16:29) [5]Ega23 © (23.06.04 16:26)
> Где купить можно?
Не знаю, я не покупал, мне именной выдали
Reindeer Moss Eater © (23.06.04 16:26)
> 2. Префиксирую двумя - тремя символами из имени таблицы.
> Во всей.
А, если не секрет, из каких соображений ?
← →
blackman © (2004-06-23 16:31) [6]1) как вы относитесь к конструкциям
Шампанское из туфельки, это Вам не водку из кирзача...
2) как вы именуете поля в таблицах в БД? Названия полей уникальны только в пределах одной таблицы или во всей базе даных?
Однозначно. (с) Жириновский
3) как вы решаете споры с сотоварищами по дизайну программы?
Есть ответы, которым лучше оставаться без вопросов...
Ни фига себе! Все - людям!..
← →
Igorek © (2004-06-23 16:32) [7]
> Всякий овощ приносит пользу, будучи употребленным надлежащим
> образом в надлежащее время.
Ну в общем случае стоит ли громоздить кучу обьектов (даже разных классов) под один with? Как из практики следует?
← →
Reindeer Moss Eater © (2004-06-23 16:33) [8]А, если не секрет, из каких соображений ?
Более всего из соображений однозначности толкования.
← →
Ega23 © (2004-06-23 16:36) [9]Более всего из соображений однозначности толкования.
Но если поле выполняет роль только счётчика, на него никто не ссылается, единственно, для чего оно может служить - удобство позиционирования на клиенте. Такие всегда называю UNID.
И ещё одно: поле, являющееся вторичным ключом, называю также, как поле первичного ключа.
← →
Игорь Шевченко © (2004-06-23 16:38) [10]
> Ну в общем случае стоит ли громоздить кучу обьектов (даже
> разных классов) под один with? Как из практики следует?
А здесь нет общего случая. Синтаксисом не возбраняется, значит, можно. Если чтение кода не вызывает особенной путаницы, то тоже можно. Употребление конструкции with оптимизирует быстродействие, но в ряде случаев ухудшает читабельность.
← →
Igorek © (2004-06-23 16:44) [11]Вообще если не сложно напишите о соглашении о наименовании (если такое есть у вас лично или в вашей конторе) таблиц и полей в базе даных.
← →
Игорь Шевченко © (2004-06-23 16:46) [12]
> Вообще если не сложно напишите о соглашении о наименовании
> (если такое есть у вас лично или в вашей конторе) таблиц
> и полей в базе даных
У нас - наименования полей согласно терминам предметной области. Имена таблиц префиксируются тремя буквами кода подсистемы.
← →
Igorek © (2004-06-23 16:47) [13]
> И ещё одно: поле, являющееся вторичным ключом, называю также,
> как поле первичного ключа.
Ну например я сторонник что-бы первичный ключ (не составной) всегда называть стандартно - "Id". Как в таком случае быть с уникальностью названий полей в одной таблице?
← →
Sandman25 © (2004-06-23 16:49) [14][10] Игорь Шевченко © (23.06.04 16:38)
Хочу добавить, что в ряде случаев отсутсвие with тоже ухудшает читабельность.DataModule1.DBGrid1.DataSource.DataSet.First;
while DataModule1.DBGrid1.DataSource.DataSet.Eof do
begin
DataModule1.DBGrid1.DataSource.DataSet.Edit;
DataModule1.DBGrid1.DataSource.DataSet.FieldByName("A").AsInteger :=DataModule1.DBGrid1.DataSource.DataSet.FieldByName("B").AsInteger;
DataModule1.DBGrid1.DataSource.DataSet.Post;
DataModule1.DBGrid1.DataSource.DataSet.Next;
end;
← →
Игорь Шевченко © (2004-06-23 16:55) [15]Sandman25 © (23.06.04 16:49)
Если этот фрагмент сделать методом DataModule и выделить DBGrid1.DataSource.DataSet в локальную переменную, то читабельность возрастет. Мне самому такой немецкий язык не нравится.
Впрочем with DataModule1.DBGrid1.DataSource.DataSet do begin
не нравится тоже
← →
Sandman25 © (2004-06-23 16:58) [16]>выделить DBGrid1.DataSource.DataSet в локальную переменную
Зачем? Принцип Оккама и в программировании работает...
← →
vuk © (2004-06-23 17:12) [17]1. Все зависит от того, что там дальше, но обычно вложенных with избегаю.
2. Названия полей БД уникальны в пределах БД и имеют префикс в виде аббревиатуры таблицы. При этом если поле является значением, взятым из другой таблицы или foreign key, то имя поля соответствует полю в той таблице, откуда берутся значения. Это позволяет просто глядя на имена полей видеть места, откуда информация взята и связи между таблицами.
3. Какая-нибудь из сторон обычно пользуется уже упомянутым плюсометом. Побеждает тот, у кого плюсомет в данный момент больше.
← →
Digitman © (2004-06-23 17:17) [18]
> Igorek © (23.06.04 16:21)
см. [1], про овощ, оно единственно верно
← →
Игорь Шевченко © (2004-06-23 17:25) [19]Sandman25 © (23.06.04 16:58)
> Принцип Оккама и в программировании работает...
Если им не злоупотреблять.
← →
Sandman25 © (2004-06-23 17:29) [20][19] Игорь Шевченко © (23.06.04 17:25)
Естественно.
← →
Igorek © (2004-06-23 17:50) [21]
> vuk © (23.06.04 17:12) [17]
> 2. Названия полей БД уникальны в пределах БД и имеют префикс
> в виде аббревиатуры таблицы. При этом если поле является
> значением, взятым из другой таблицы или foreign key, то
> имя поля соответствует полю в той таблице, откуда берутся
> значения. Это позволяет просто глядя на имена полей видеть
> места, откуда информация взята и связи между таблицами.
Такой позиции придерживается мой напарник.
> Игорь Шевченко © (23.06.04 16:24) [1]
> > 2) как вы именуете поля в таблицах в БД? Названия полей
> > уникальны только в пределах одной таблицы или во всей
> базе даных?
> В пределах таблицы
Такова моя позиция.
Вот мы и не можем прийти к консенсусу. Так-что:
1) что такое плюсомет? минусомет? что делать если это не помогает? Есть и то и то, но веса плюсов и минусов у обоих разные - отсюда и разная общая оценка конкретного варианта - что делать?
2) vuk и Игорь Шевченко - покажите как мастера пример спора в данной ситуации
← →
vuk © (2004-06-23 18:41) [22]to Igorek © (23.06.04 17:50) [21]:
>Вот мы и не можем прийти к консенсусу.
Ну... Даже и не знаю, что сказать по этому поводу. Наверное нужно определиться с тем, как вы подходите к данным. Тот подход, что применяется у нас, подразумевает, что одни и те же данные должны называться одинаково, где бы они не хранились. Споров у нас по этому поводу не было, все как-то этой точки зрения уже давно придерживаются.
>1) что такое плюсомет? минусомет?
Плюсомет (из ФИДО) - стрррашное оружие модератора. Использование плюсомета приводит к награждению плюсами объекта применения.
>что делать если это не помогает?
Насколько понимаю, применительно к разрешению спорных ситуаций, это просто когда кто-то у кого больше опыта в данном вопросе просто говорит, что будет вот так, а не иначе. "Не помочь" оно не может. По определению.
← →
Паниковский © (2004-06-24 07:25) [23]Igorek
счас погодь
во нашел в этой книге ты найдеш ответы на твои вопросы
"Веревка достаточной длины, чтобы выстрелить себе в ногу"
Ален И. Голуб
http://infocity.kiev.ua/m.php?f=0&id=117
← →
evvcom © (2004-06-24 08:28) [24]
> >выделить DBGrid1.DataSource.DataSet в локальную переменную
>
> Зачем?
Дело в том, что при использовании конструкции with DBGrid1.DataSource.DataSet do компилятор неявно в стеке все равно отводит место для хранения этой переменной. Поэтому с этой точки зрения употребление l_DataSet := DBGrid1.DataSource.DataSet; полностью идентично. Точно также как и обращение к свойствам и методам внутри with или через l_DataSet опять же идентично. Здесь мы ничего не сэкономим. Но при довольно большом объеме кода процедуры использование with да еще с несколькими "цепочками" (через запятую или многоэтажная конструкция) сильно затрудняют чтение/понимание кода, а также и отладку. Кроме того, использование многоэтажек добавляет риск использования свойства/метода не от того объекта (при одинаковых именах).
Я поначалу использовал with чуть ли не везде и повсюду. Сказалось влияние обучения в ВУЗе. Но с опытом понял, что это далеко не везде допустимо. И сейчас лучше ввожу явно доп.переменную и обращаюсь через нее вместо использования with.
← →
Sandman25 © (2004-06-24 09:50) [25][24] evvcom © (24.06.04 08:28)
>Но с опытом понял, что это далеко не везде допустимо.
Если речь идет о вложенных with, то я согласен.
Вводить же переменную в случае одинарного with смысла не вижу.
← →
Игорь Шевченко © (2004-06-24 10:52) [26]
> Дело в том, что при использовании конструкции with DBGrid1.DataSource.DataSet
> do компилятор неявно в стеке все равно отводит место для
> хранения этой переменной. Поэтому с этой точки зрения употребление
> l_DataSet := DBGrid1.DataSource.DataSet; полностью идентично.
Разумеется. Место в стеке или свободный регистр. Отсюда и вывод, что использование with увеличивает быстродействие кода.
Но кроме быстродействия есть еще такое понятие, как читабельность кода и удобство его отладки.
← →
Igorek © (2004-06-24 11:47) [27]Я прошу прощения. А локальную переменную нельзя разместить в стеке/регистре?
← →
Игорь Шевченко © (2004-06-24 11:56) [28]
> А локальную переменную нельзя разместить в стеке/регистре?
Так она там и размещается. Использование with подразумевает неявную локальную переменную.
← →
Igorek © (2004-06-24 11:58) [29]А явная размещается? Если да, то with нифига не оптимизирует и бинаре.
← →
Игорь Шевченко © (2004-06-24 11:59) [30]Igorek © (24.06.04 11:58)
> Если да, то with нифига не оптимизирует и бинаре
Это почему же ?
← →
Igorek © (2004-06-24 13:16) [31]
> Игорь Шевченко © (24.06.04 11:59) [30]
Ну или с with или без - неявная/явная переменная при возможности помещается в стек/регистры. Или я что-то недопонимаю. Не спец в этом.
← →
Reindeer Moss Eater © (2004-06-24 13:21) [32]локальные переменные процедур всегда живут в стеке.
тогда как c with у неявно создаваемых есть шанс попасть в регистр
← →
Игорь Шевченко © (2004-06-24 13:22) [33]Reindeer Moss Eater © (24.06.04 13:21)
> локальные переменные процедур всегда живут в стеке
Если не включена оптимизация :)
← →
Reindeer Moss Eater © (2004-06-24 13:24) [34]Если не включена оптимизация :)
Имеются ввиду неиспользуемые, но задекларированные локальные переменные процедур?
← →
Игорь Шевченко © (2004-06-24 13:26) [35]Reindeer Moss Eater © (24.06.04 13:24)
> Имеются ввиду неиспользуемые, но задекларированные локальные
> переменные процедур?
Нет, имеются в виду самые что ни на есть используемые переменные. Оптимизатор старается разместить их в регистрах для повышения быстродействия. Отсюда иногда в отладчике появляется фраза, что значение переменной недоступно из-за оптимизации
← →
Igorek © (2004-06-24 13:27) [36]
> Reindeer Moss Eater © (24.06.04 13:21) [32]
> локальные переменные процедур всегда живут в стеке.
> тогда как c with у неявно создаваемых есть шанс попасть
> в регистр
А у явных локальных нету такого шанса? При оптимизации/без таковой?
← →
Reindeer Moss Eater © (2004-06-24 13:28) [37]Тогда я не понял потенциальных преимуществ with перед явными переменными в деле оптимизации машинного кода
← →
Igorek © (2004-06-24 13:41) [38]
> Reindeer Moss Eater © (24.06.04 13:28) [37]
Я тоже.
← →
Игорь Шевченко © (2004-06-24 13:43) [39]Reindeer Moss Eater © (24.06.04 13:28)
Igorek © (24.06.04 13:41)
Не надо объявлять переменные, например :)
← →
Igorek © (2004-06-24 13:48) [40]
> Игорь Шевченко © (24.06.04 13:43) [39]
> в деле оптимизации машинного кода
Страницы: 1 2 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.032 c