Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2002.07.22;
Скачать: [xml.tar.bz2];

Вниз

Стиль написания.   Найти похожие ветки 

 
MVova   (2002-06-21 16:50) [0]

Скачал компонентик и увител такой кусок кода.
Как вам стиль написания?

if fActive then begin
if Assigned(fOleContainer) then begin
if Assigned(fDataLink) then begin
if Assigned(fDataLink.Field) then begin
if fDataLink.Active then begin
if fDataLink.Field.IsBlob then begin
if not fDataLink.Field.IsNull then begin
if not fOleAutoDisplay then begin
saLoadOleFromDataSource;
end;
fOleContainer.DoVerb({ovShow}ovPrimary);
Result:=TRUE;
end;
end;
end;
end;
end;
end;
end;


 
vuk   (2002-06-21 16:56) [1]

Икебанисто... :o)


 
Игорь Шевченко   (2002-06-21 16:57) [2]

Сразу видно - эстет писал :-)


 
DeMoN-777   (2002-06-21 16:57) [3]

Вот это да =)


 
Виктор Щербаков   (2002-06-21 16:59) [4]

Правильно и красиво...


 
PVOzerski   (2002-06-21 17:09) [5]

Вполне читабельно. Я бы, пожалуй, скобок begin...end меньше сделал, но ничего плохого и так не вижу. Главное - разные по смыслу действия в одну строку не попадают, а отступы организованы так, что легко найти начала и концы блоков. Насчет того, что лучше - функция Assigned или просто сравнение с nil - не знаю.


 
Кулюкин Олег   (2002-06-21 17:09) [6]

Идеологически верно.
Но уж больно массивно :)


 
Дмитрий Баранов   (2002-06-21 17:18) [7]

в MSDN такого полно, if (SUCCEEDED()) { ... в 20 этажей


 
MVova   (2002-06-21 17:18) [8]


> Главное - разные по смыслу действия в одну строку не попадают,
> а отступы организованы так, что легко найти начала и концы
> блоков.


if (fActive) and
(Assigned(fOleContainer)) and
(Assigned(fDataLink)) and
(Assigned(fDataLink.Field)) and
(fDataLink.Active) and
(fDataLink.Field.IsBlob) and
(not fDataLink.Field.IsNull) then
begin
if not fOleAutoDisplay then
saLoadOleFromDataSource;
fOleContainer.DoVerb({ovShow}ovPrimary);
Result:=TRUE;
end;

Неужели так хуже читается??
Хотя, на вкус и цвет .... нет.

Но всеже, в результате какой код быстрее при выполнеии???


 
Raptorial   (2002-06-21 17:18) [9]

!
> Правильно и красиво...

По моему, с AND покрасивее получилось бы...
Да и работало бы быстрее!


 
esu   (2002-06-21 17:27) [10]

Я бы тоже с and писал... Вот тут термин придумали "икебанисто" :) Вот не люблю я этой икебанистости. А работать будет IMHO одинаково. Ну компилироваться навернео быстрее с and.


 
Anatoly Podgoretsky   (2002-06-21 17:27) [11]

еще бы скобочки убрать


 
Виктор Щербаков   (2002-06-21 17:29) [12]

esu © (21.06.02 17:27)

> Ну компилироваться навернео быстрее с and.

А ты время засеки :)

4all
Конечно дело вкуса, но мне "лесенка" понравилась. Уж больно красивая.


 
MVova   (2002-06-21 17:34) [13]


> Конечно дело вкуса, но мне "лесенка" понравилась. Уж больно
> красивая.


Там страниц 10 такого, когда нажать и подержать PageDown класний мультик получается ;)


 
Виктор Щербаков   (2002-06-21 17:35) [14]

MVova © (21.06.02 17:34)
Ну вот, всё впечатление испортил :(


 
Igorek   (2002-06-21 23:01) [15]

Во первых надо учитывать какой режим выставлен - "complete evaluation" или "partial evaluation". Это если есть условия, корректная проверка которых возможна только при истинности других.
Если выставлен "partial evaluation" то мне кажеться, что всегда можно сбить в один if.
Но если компилить исходник будет в общем случае неизвестно кто, тогда зависимые условия надо разделять в разные if.

Ну и конечно без лишних begin-end

---
"Я ему про Фому, а он мне про Ерему"


 
Igorek   (2002-06-22 21:27) [16]

Кстати можно использовать переключение данного режима компиляции прямо в коде. Тогда, вообще можно обойтись без выше приведенной конструкции.

---
"Я ему про Фому, а он мне про Ерему"


 
JohnnyJ   (2002-06-23 04:06) [17]

Да, симпотно получилось, но если все сводится к одному блоку при выполнении всех условий, то проще все же так:


if fActive
and Assigned(fOleContainer)
and Assigned(fDataLink)
and Assigned(fDataLink.Field)
and fDataLink.Active
and fDataLink.Field.IsBlob
and (not fDataLink.Field.IsNull) then
begin
if not fOleAutoDisplay then
saLoadOleFromDataSource;
fOleContainer.DoVerb({ovShow}ovPrimary);
Result:=TRUE;
end;


 
Polevi   (2002-06-23 12:04) [18]

гм а я обычно пишу так

result:=FALSE;
if not fActive then exit;
if not Assigned(fOleContainer) then exit;
if not Assigned(fDataLink) then exit;
if not Assigned(fDataLink.Field) then exit;
if not fDataLink.Active then exit;
if not fDataLink.Field.IsBlob then exit;
if fDataLink.Field.IsNull) then exit;
if not fOleAutoDisplay then
saLoadOleFromDataSource;
fOleContainer.DoVerb({ovShow}ovPrimary);
Result:=TRUE;




Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2002.07.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.005 c
3-70643
Eduard
2002-07-01 10:36
2002.07.22
ADOCommand.Parameters


1-70692
SadStar
2002-07-11 02:42
2002.07.22
Запутался в трех строках кода при работе с TValueListEditor


3-70655
TVU
2002-07-01 16:33
2002.07.22
Как прекратить выполнение сохраненой процедуры в MSSQL 7.0


1-70802
dlK
2002-07-09 11:36
2002.07.22
Процесс сервиса занимает 99% процессорног времени.


14-70890
MJH
2002-06-05 18:13
2002.07.22
DJ Quicksilver - Meets Shaggy





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский