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

Вниз

Оформление кода   Найти похожие ветки 

 
ekto ©   (2008-05-16 17:22) [0]

Кто как пишет?

 with TMyForm.Create(Applicatio) do
 try
   ....
   ShowModal;
   ...
 finally
   Free;
 end;

или:

 with TMyForm.Create(Applicatio) do
   try
     ....
     ShowModal;
     ...
   finally
     Free;
   end;


 
clickmaker ©   (2008-05-16 17:24) [1]

... do
begin
 try
 ...
end;


 
Сергей М. ©   (2008-05-16 17:24) [2]

Загадка для продвинутых - "найди три отличия в этих шматках кода")


 
Rouse_ ©   (2008-05-16 17:32) [3]

Если сделать отступ блока try после do то скомпиленный код будет работать в полтора раза медленней, поэтому первый вариант ;)


 
ekto ©   (2008-05-16 17:45) [4]


> Rouse_ ©   (16.05.08 17:32) [3]

я так и думал


 
Дмитрий С   (2008-05-16 18:36) [5]

Мне предпочтительней первый вариант.

Только овнером я обычно выбираю другую форму.


 
Юрий Зотов ©   (2008-05-16 18:48) [6]

Была такая хохма (реально была). Два чела в нашей команде (назовем их А и Б) постоянно спорили о том, нужно ли после then писать begin на отдельной строке, или нет.

Как-то А писал DLL и заюзал ShareMem, но забыл, что его нужно указывать первым. Начал отлаживать - естественно, лезут ошибки 216 и 217. Гоняет полдня, уже в мыле весь, ничего понять не может. И говорит Б - слушай, глянь свежим взглядом, может увидишь что. Б отвечает - ладно, иди покури.

Б садится за машину А и в полминуты ошибку вылавливает. Возвращается А из курилки - все работает, как часы. Спрашивает у Б - в чем же было дело?

И тот ему торжественно отвечает - ну сколько раз я тебе говорил, что begin после then надо писать на отдельной строке!!!

Несколько секунд общего молчания - и затем громовой хохот.

:o)


 
Игорь Шевченко ©   (2008-05-16 18:51) [7]

with TMyForm.Create(Applicatio) do
   ShowModal;

Я так пишу в большинстве случаев


 
Юрий Зотов ©   (2008-05-16 18:54) [8]

> Игорь Шевченко ©   (16.05.08 18:51) [7]

with и do - лишние.
:о)


 
Игорь Шевченко ©   (2008-05-16 19:03) [9]

Юрий Зотов ©   (16.05.08 18:54) [8]

Во-первых, для ясности кода
фразу TMyForm.Create(Application).ShowModal я буду долго переваривать
Во-вторых, а вдруг потребуется вставить код промеж Create и ShowModal или Free, не дай Аллах, вызывать :)


 
Юрий Зотов ©   (2008-05-16 19:09) [10]

> Игорь Шевченко ©   (16.05.08 19:03) [9]

Игорь, когда в один ненастный день вдруг забудешь, что ShareMem пишется первым - тогда поймешь, что я был прав.

;o)


 
Игорь Шевченко ©   (2008-05-16 19:22) [11]

Юрий Зотов ©   (16.05.08 19:09) [10]


> Игорь, когда в один ненастный день вдруг забудешь, что ShareMem
> пишется первым


Это вряд ли :)


 
Anatoly Podgoretsky ©   (2008-05-16 19:27) [12]

Не зарекайся.


 
DiamondShark ©   (2008-05-16 19:53) [13]


> Игорь Шевченко ©   (16.05.08 18:51) [7]
> with TMyForm.Create(Applicatio) do
>    ShowModal;
>
> Я так пишу в большинстве случаев

Даже если учесть, что есть caFree, то всё равно ахтунг.


 
Andy BitOff ©   (2008-05-16 20:35) [14]

А я видел так: with TMyForm.Create(Self) do; try; ShowModal; finally; Free; end;
Всмысле, в одну строчку, видимо, чтобы сократить количество строк.


 
@!!ex ©   (2008-05-16 20:56) [15]

> чтобы сократить количество строк.

бояцца, как бы у компьютера строчки не кончились? :))


 
Simpson ©   (2008-05-16 21:28) [16]

Одно время ходил сишный код в виде псевдо графики, там помойму кошка была нарисована))


 
Умище   (2008-05-16 21:51) [17]

Всегда относящиеся к блоку открывающий/закрывающий оператор пишу на уровне блока, это позволяет всегда видеть, к чему относится блок:

with TForm.Create(...) do
try
 //
 //
finally
 //
 //
end;


 
Умище   (2008-05-16 21:53) [18]

причем в обязательном порядке обрамляю блоки операторами begin..end;:

with TForm.Create(...) do
begin
 try
  //
  //
 finally
  //
  //
 end;
end;


 
Игорь Шевченко ©   (2008-05-16 22:02) [19]

Умище   (16.05.08 21:53) [18]

Все понимаю, а зачем try ... end еще в begin..end заворачивать ?


 
Умище   (2008-05-16 22:04) [20]

Моя предпочитает блоки кода определять по ключевым словам begin..end


 
korneley ©   (2008-05-16 22:06) [21]


> Игорь Шевченко ©   (16.05.08 22:02) [19]

А как же [9]? ("во-вторых") ;)


 
Andy BitOff ©   (2008-05-16 22:09) [22]

А я всегда пишу begin...end, даже если внути выполняется одно действие, правда не всегда (сейчас глянул сырцы), причем begin пишу в той же строке, что и оператор. А все остальные конструкции внутри пишу с отступом, что позволяет видеть в каком блоке находится конструкция.

with TForm.Create(...) do begin
..try
....
....for ... do begin
......if ... begin
......
......end;
......if ...
........
....end;
....
..finally
....
....
..end;
end;



 
@!!ex ©   (2008-05-16 22:14) [23]

> А я всегда

...

> правда не всегда

ЖЖошь. :)

Я тоже почти всегда пишу begin...end. Причем begin в той же строчке что и оператор.
Когда видишь end, то знаешь что он относится к оператору, т.к. около оператора всегда есть begin. очень удобно. смотреть не могу на код, где begin на отдельной строке.


 
Умище   (2008-05-16 22:16) [24]


> Когда видишь end, то знаешь что он относится к оператору,
>  т.к. около оператора всегда есть begin. очень удобно. смотреть
> не могу на код, где begin на отдельной строке.


Видимо тебя воротит и от всех борландовских модулей...


 
@!!ex ©   (2008-05-16 22:20) [25]

> Видимо тебя воротит и от всех борландовских модулей...

Да. Так и есть.
К счастью я практически не работаю с VCL.


 
Игорь Шевченко ©   (2008-05-16 22:42) [26]

korneley ©   (16.05.08 22:06) [21]


> А как же [9]? ("во-вторых") ;)


Так я не пишу begin...end :)

@!!ex ©   (16.05.08 22:14) [23]


> Я тоже почти всегда пишу begin...end. Причем begin в той
> же строчке что и оператор.
> Когда видишь end, то знаешь что он относится к оператору,
>  т.к. около оператора всегда есть begin. очень удобно. смотреть
> не могу на код, где begin на отдельной строке.


Я до позапрошлого года придерживался точно таких же убеждений, а на C и C# до сих пор придеживаюсь.

Но раз D2006 ставит сама begin на следующей строке, то исправлять за ней мне просто лень, code templates править тоже лень, поэтому на Паскале потихоньку перешел на Borland"овский стиль. Строчек правда больше получается - это фигово.


 
korneley ©   (2008-05-16 23:02) [27]


> Игорь Шевченко ©   (16.05.08 22:42) [26]
> Так я не пишу begin...end :)

Я не о том. Между begin и try тоже можно что-нибудь вставить, или, не к ночи будь помянуто, между end и end :)). Таким приверженцам сеппуку, только грамотный каясяку поможет %)

>  ...то исправлять за ней мне просто лень...

А просто вырубил эту всю умную машинерию, и пишу как прежде:
if ... then begin
...
end;


 
korneley ©   (2008-05-16 23:05) [28]

каясяку = кайсяку. Хотя и так хорошо... :)


 
korneley ©   (2008-05-16 23:13) [29]

И совсем уже вдогонку: в BDS2006, до редакции под себя code templates, мне добраться не удалось. Никак. :( Только вглюч/отглюч. Может плохо искал...


 
Игорь Шевченко ©   (2008-05-16 23:26) [30]

korneley ©   (16.05.08 23:02) [27]

Не, мне пальцы жалко, пусть уж среда за меня набирает.


> И совсем уже вдогонку: в BDS2006, до редакции под себя code
> templates, мне добраться не удалось. Никак. :( Только вглюч/отглюч.
>  Может плохо искал...


View|Templates, правой кнопкой на Template и Edit ee :)


 
korneley ©   (2008-05-16 23:32) [31]


> Игорь Шевченко ©   (16.05.08 23:26) [30]

!!! Дык!!! Как же!!! Ух... Я все Tools->Options облазил, а оно, вона как %) Спасибо.


 
Eraser ©   (2008-05-16 23:52) [32]

и в C (C++, php, java и т.п.) и в Паскале операторные скобки размещаю в отдельных строках.
разработчики VS и CDS со мной согласны )


 
Anatoly Podgoretsky ©   (2008-05-16 23:58) [33]

> Игорь Шевченко  (16.05.2008 22:42:26)  [26]

Это не фигово, если работа тарифицируется в строках.
Сообственно в чем будет тарифицироваться, того много и делать.


 
Loginov Dmitry ©   (2008-05-17 00:12) [34]

> Когда видишь end, то знаешь что он относится к оператору,
> т.к. около оператора всегда есть begin. очень удобно. смотреть
> не могу на код, где begin на отдельной строке.


Подумай о людях, которым возможно (не упаси господь) придется разбираться с этим кодом :)

Сам пару лет ставил ставил begin после оператора. Смотреть не мог на код, где begin и end на одном уровне.
Однако переучился (незаметно причем как-то), и теперь ситуация обратная - код с begin после оператора не воспринимается.


 
korneley ©   (2008-05-17 00:12) [35]


> Anatoly Podgoretsky ©   (16.05.08 23:58) [33]
> Это не фигово,  если работа тарифицируется в строках.Сообственно в чем
> будет тарифицироваться, того много и делать.

:) Напомнило: "план программиста - 1.5 _отлаженных_ строки в день" (не шутка) Как слова-то значения поменяли: и "план" и "отлаженных"... :)


 
Knight ©   (2008-05-17 00:17) [36]

> [0] ekto ©   (16.05.08 17:22)

with TMyForm.Create(Application) do try
 ...
 if ShowModal=mrOk then begin
   ...
 end else begin
   ...
 end;
finally
 Free;
end;


 
TIF ©   (2008-05-17 00:19) [37]

Хм, поделюсь своими видениями оформления кода, это чисто IMHO

procedure qwerty();
var i, j: integer; s: string;
begin

 s:="abc";
 for i:=1 to 10 do
 begin
  s:=s+IntToStr(i);
 end;

 if j=0
   then s:="1";

 if s="aaa"
   then
   begin
    ...
   end
   else
   begin

   end;

end;


 
Knight ©   (2008-05-17 00:23) [38]

> [37] TIF ©   (17.05.08 00:19)
> if s="aaa"
>   then
>   begin
>    ...
>   end
>   else
>   begin
>
>   end;


В таком всегда путался.. посему и пришёл к

if s="aaa" then begin
  if f="bbb" then begin
    ...
  end;
end else begin
  ...
end;


что для меня более читабельно, сразу видно какой бегин к какому энду.. :)


 
TIF ©   (2008-05-17 00:28) [39]


> Knight ©   (17.05.08 00:23) [38]


Как вариант использую частенько:


if s="aaa"
 then begin
   if f="bbb"
     then begin
       ...
     end;
 end
 else begin
 ...
 end;


 
Andy BitOff ©   (2008-05-17 00:30) [40]

> Knight ©   (17.05.08 00:23) [38]

Но вот в случае с else end не очевиден. В таком случае else и далее с новой строки. ИМХО



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

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

Наверх





Память: 0.55 MB
Время: 0.07 c
15-1210775089
Vlad Oshin
2008-05-14 18:24
2008.06.29
Впервые в команде. Думал, прикалываетесь.


15-1210936135
Kolan
2008-05-16 15:08
2008.06.29
SQLite не может получить доступ на Висте, почему?


3-1200920739
S@shka
2008-01-21 16:05
2008.06.29
Передать в UDF TimeStamp


2-1212413687
Massiv
2008-06-02 17:34
2008.06.29
Копия массива


2-1212308588
leonidus
2008-06-01 12:23
2008.06.29
Как определить что мое окно наверху?





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