Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
8-1082658175
Riant
2004-04-22 22:22
2004.07.11
Flash в Delphi


6-1083155208
Worm
2004-04-28 16:26
2004.07.11
пересылка файдла каждые 5 сек.


1-1088054215
nick
2004-06-24 09:16
2004.07.11
Как освободить память


4-1085520884
Германн
2004-05-26 01:34
2004.07.11
Documents and Settings


6-1084424609
nkoleda
2004-05-13 09:03
2004.07.11
Вопрос по NMFTP





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский