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

Вниз

Как красивее и понятнее ?   Найти похожие ветки 

 
ANB ©   (2006-06-09 10:58) [0]



if (A > B)
then X := A;



или



if (A > B)
 then X := A;



???

И нет ли у кого примеров красиво оформленных исходников ?

А то у нас холивар с начальством начинается и начальник предложил показать ему примеры кода других грамотных программистов.


 
McSimm ©   (2006-06-09 11:02) [1]


> примеры кода

исходники VCL


 
tButton ©   (2006-06-09 11:02) [2]

if (A>B) then X:=A;

if (A>B)
 then X:=A
 else X:=B;

if (A>B) then begin
 ...
end;

if (A>B) then begin
 ...
end else begin
 ...
end;


 
Kolan ©   (2006-06-09 11:03) [3]


> И нет ли у кого примеров красиво оформленных исходников
> ?

Стандарты стилевого оформления фирмы борланд. На королевстве есть.

Оба твои варианта - неверные.

if (A > B) then
X := F;

Так я пишу.

А Борланд так:
if (A > B) then X := F;


 
Kolan ©   (2006-06-09 11:03) [4]


> if (A > B) then
> X := F;
<тут два пробела>Так я пишу.


 
ANB ©   (2006-06-09 11:06) [5]


 if (ARect.Left > FDragPos.x) or (ARect.Right < FDragPos.x) then
   DeltaX := AbsMin(ARect.Left - FDragPos.x, ARect.Right - FDragPos.x)
 else DeltaX := 0;
 if (ARect.Top > FDragPos.y) or (ARect.Bottom < FDragPos.y) then
   DeltaY := AbsMin(ARect.Top - FDragPos.y, ARect.Bottom - FDragPos.y)
 else DeltaY := 0;
 if (DeltaX <> 0) or (DeltaY <> 0) then
   OffsetRect(FDockRect, -DeltaX, -DeltaY);


- так мне совсем не нравится. Пока не нашел у них примера, где then на новой строке.


 
ANB ©   (2006-06-09 11:08) [6]


> if (A > B) then
>   X := F;
> Так я пишу.

Борланд тоже так пишет.
Насчет переноса then мы уже договорились с начальством. Затыка только в нем (точнее - ставить отступ или нет), т.к. я одиночные операторы в одной строке с if не пишу.


 
Gero ©   (2006-06-09 11:14) [7]

> Борланд тоже так пишет.

Какие тогда могут быть соменения? Или есть мнение, что Борланд пишет «неграмотно»?


 
McSimm ©   (2006-06-09 11:17) [8]

Мое скромное мнение, если then не переносит, то expression, как элемент вложенной структуры делается с отступом.
Если же есть желание then/else вместе с выражением писать на новых строках, то отступ не нужен, т.к. then/else элементы того же уровня, что if.


 
ANB ©   (2006-06-09 11:17) [9]


     if DragObject is TDragDockObject
     and (TDragDockObject(DragObject).Control.HostDockSite <> nil)
     and (TDragDockObject(DragObject).Control.HostDockSite.Handle = Info.CurrentWnd) then
       Exit;


Похоже у борланда в стандарте then вообще не переносят. А может автоформаталкой все обработали.
Вот пример мне из борланда  - не нравится, т.к. then уползает за экран.


 
palva ©   (2006-06-09 11:20) [10]

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


 
ANB ©   (2006-06-09 11:20) [11]


> Если же есть желание then/else вместе с выражением писать
> на новых строках, то отступ не нужен, т.к. then/else элементы
> того же уровня, что if.

Во, я своему начальнику так и говорю. А он заладил - все отступы делают.
Плюс 1 в мою пользу.
А выражение под then я завсегда и так с отступом делаю. Только then, как правило, при этом переношу.


> McSimm ©   (09.06.06 11:17) [8]

А нет кусочка своего исходника, где бы это было видно ?


 
Kolan ©   (2006-06-09 11:21) [12]

if (A > B)
then X := A;


так переносить then имхо - ужасно неправильно. никогда такого не видел.. Так делаю только если условие вылазит за 80 символов.

Это:
if (A>B) then begin
...
end;

На Си похоже...

Мне нравится так:

if (A > B) then
begin
 X := F;
end
else
begin
 X := F;
end;

или
if (......................................long..................................... ............)
then
begin
 X := F;
end;  


Begin и end - естественно только если надо....


 
ANB ©   (2006-06-09 11:22) [13]


> Нужно делать так, как просит начальство, и сразу же просить
> прибавку к зарплате.

Прибавку не дадут, но если я буду по своему писать - то и не урежут.
Просто пока нас двое - (я и начальник), то можно бодаться. Но планируют взять еще одного - двух, и их тоже надо будет заставлять писать по стандарту. А мы в стандарте еще не сошлись.


 
Kolan ©   (2006-06-09 11:23) [14]

А то, что вложенность надо обозначать отступами- помоему вообще не приложное правило. И в XLM и везде оно есть. В Delphi отступ-два пробела...


 
Empleado ©   (2006-06-09 11:24) [15]


> ANB ©   (09.06.06 10:58)  

чтобы не спорить с начальством --> ifthen :))

красивее imho использовать Smart tab и Optimal fill


 
Kolan ©   (2006-06-09 11:24) [16]

Кстати а скобочки в условии нафига?


 
vidiv ©   (2006-06-09 11:26) [17]

Если длинное условие, я его пишу примерно так:

if
   (x > 32) and (x < 64) and (y > 128) and (y < 256) and ((Flag and $04) <> 0)
then
   Action();


 
Prohodil Mimo ©   (2006-06-09 11:27) [18]

Я всегда пишу так:

If ..... then
  X := F;

или

If (.........) and (.........) then
Begin
  A := B;
  X := F;
End;

или

If ((.........) and (.........)) or
  ((.........) and (.........)) then
Begin
  A := B;
  X := F;
End;

Then - никогда не вылезает за пределы


 
Kolan ©   (2006-06-09 11:29) [19]


> If


> Begin

Эти дела пишутся с маленькой буквы. как и все словаЮ которые выделяются жирным шрифтом в IDE


 
Ketmar ©   (2006-06-09 11:29) [20]

не переносят. более того, у них есть coding style dox, который многие конторы используют как стандарт de-facto. сам в своё время ругался матом. и переучивался. %-)


 
tButton ©   (2006-06-09 11:30) [21]


> На Си похоже...

на пхп
я на пхп чаще чем на сях пишу...
точне я не пишу на сях вообще, а на пхп пишу =)

мхо, раз уж выражение в одной строке с if не пишется, то не переносить then - не логично. получается
if условие then
а_тут_у_нас_болтается_какое-то_выражение_не_пришей_ко_мне_рукав_называется

при беглом просмотре кода, особенно, когда условие слишком длинное и не видно, что там после then
выражение можно принять за самостоятельное

раньше всегда писал
if (A>B)
 then X:=A;

и всегда было ясно
вот эта строка начинается с if - здесь у нас условие
вот эта строка начинается с then - здесь у нас выражение, которое будет выполняться при выполнении условия описаного выше


 
Ketmar ©   (2006-06-09 11:34) [22]

>при беглом просмотре кода, особенно, когда условие слишком длинное
>и не видно, что там после then выражение можно принять
>за самостоятельное
только с перепою. %-) для того, чтобы не принималось, есть отступы.


 
ANB ©   (2006-06-09 11:34) [23]

Скобки в условии - сишная привычка.


> if условие then
> а_тут_у_нас_болтается_какое-то_выражение_не_пришей_ко_мне_рукав_называется
> при беглом просмотре кода, особенно, когда условие слишком
> длинное и не видно, что там после then
> выражение можно принять за самостоятельное

Поддерживаю.


 
Desdechado ©   (2006-06-09 11:34) [24]

Видимость или невидимость THEN не меняет сути, т.к. в начале строки четко видно IF и ELSE.
Да и похоже на Си, у которого THEN нет вовсе, что не мешает восприятию.
А если еще по сишной привычке условия ВСЕГДА брать в скобки (даже одиночные), то путаницы между условиями и тем, что по ним выполняется, не будет.

имхо


 
Prohodil Mimo ©   (2006-06-09 11:35) [25]

Kolan ©   (06.06.09 11:29) [19]
Первые буквы в строке заглавными пишу, Переменные - так же,и ещё все имена, если они составные, то первая буква каждой части тоже заглавная.

можете убить - не исправлюсь :о)


 
скромное мнение   (2006-06-09 11:36) [26]

Лично я пишу так, чтобы потом дебаггером было удобно по шагам проходить.

if SomeCondition() then DoSomething();

или

if SomeCondition() then
 DoSomething();
?
Лично для меня второй вариант и нагляднее и удобнее в сопровождении.

P.S.
А спор о том, переносить then или нет на новую строку напоминает спор «остроконечников» и «тупоконечников».


 
McSimm ©   (2006-06-09 11:39) [27]


> А нет кусочка своего исходника, где бы это было видно ?

then я не привык переносить, только else

С примерами туго, под рукой вообще нет ничего по Delphi, один вот примерчик моего кода случайно затесался тут :)
http://www.delphimaster.ru/64.html


 
tButton ©   (2006-06-09 11:39) [28]


> «тупоконечников»

ввиду незнания сабжа приводимого в качестве примера спора, склонен расценивать сие как попытку оскорбления =)

хотя мне * ибо как писал так и буду
а для форматирования текстов (в т.ч. листингов, в т.ч. программ на OP) не мало программ написано =)


 
Reindeer Moss Eater ©   (2006-06-09 11:41) [29]

if (A>B)
then X:=A;


x:=Max(a,b);


 
скромное мнение   (2006-06-09 11:44) [30]

>> «тупоконечников»

>ввиду незнания сабжа приводимого в качестве примера спора, склонен >расценивать сие как попытку оскорбления

Это старая история. Когда только изобрели громоотвод, в научных кругах разгорелись жаркие дискуссии на тему, какая конструкция принципиально лучше: металлический стержень с острым концом или с тупым. Оная дискуссия во многом напоминала многочисленные споры, проходящие и на этом форуме, как по конструктиву, так и по содержанию. :-)


 
скромное мнение   (2006-06-09 11:44) [31]

>> «тупоконечников»

>ввиду незнания сабжа приводимого в качестве примера спора, склонен >расценивать сие как попытку оскорбления

Это старая история. Когда только изобрели громоотвод, в научных кругах разгорелись жаркие дискуссии на тему, какая конструкция принципиально лучше: металлический стержень с острым концом или с тупым. Оная дискуссия во многом напоминала многочисленные споры, проходящие и на этом форуме, как по конструктиву, так и по содержанию. :-)


 
McSimm ©   (2006-06-09 11:44) [32]


> один вот примерчик моего кода случайно затесался

как видите, элементы одной конструкции на одном уровне смотрятся очень удобно.
Некоторые склонны делать дополнительный отступ для подэлементов case, строго говоря так наверное правильнее, но тогда сами ветки с кодом получаются с двойным отступом. Так что я предпочитаю один уровень для case и его ключей


 
Kolan ©   (2006-06-09 11:45) [33]


> if условие then
> а_тут_у_нас_болтается_какое-то_выражение_не_пришей_ко_мне_рукав_называется

отступы нужно правильные делать....

Чё спорить всё в VCL есть....


 
han_malign ©   (2006-06-09 11:47) [34]


> красивее imho использовать Smart tab и Optimal fill

- не надо советовать такую гадость как Optimal fill, времена когда каждый байт на счету был - прошли. При Optimal fill - пробелы попадающие в позиции табуляции заменяются одним #9 - при изменении отступов/шага табуляции - все исходики "едут"...


 
ЮЮ ©   (2006-06-09 12:09) [35]

if условие then  Action1 else Action2;

если не помешается в 80 символов, то начинаются переносы

if условие then  
 Action1
else
 Action2;


если и теперь 1 строка не помещается в 80 символов, то

if
 условие
then  
 Action1
else
 Action2


Естественно, условие, Action1, Action2   не выходят за 80-й символ и тоже, при необходимости, переносятся

     try
       doc.Save;
       doc := nil;
     except
       if
         Application.MessageBox(
           PChar(
             "Невозможно удалить подразделения."#10#13"Удалить только " +
             "приказ, оставив подразделения как "введенные без приказа"?"
           ),
           "Ошибка при удалении приказа"
           MB_YESNO + MB_ICONWARNING + MB_DEFBUTTON2
         ) = mrYes
       then begin
         doc.Free;
         doc := nil;
         DefaultConnection.Con.Exec(
           "EXEC dbo.SeDepartmentChanges_ClearDocumentRelationships " +
           IntToStr(DocumentInfo.Id)
         );
         doc := TDocumentVacanciesList.Create(false);
         doc.AttrValue[DOCUMENT_ATTR_ID] := DocumentInfo.Id;
         doc.Load;
         doc.Delete;
         doc.Save;
         doc := nil;
       end;
     end;


 
Empleado ©   (2006-06-09 12:14) [36]


> han_malign ©   (09.06.06 11:47) [34]

>- не надо советовать такую гадость ....
это был не совет; читай внимательнее !


 
Игорь Шевченко ©   (2006-06-09 12:15) [37]

Reindeer Moss Eater ©   (09.06.06 11:41) [29]

А вот и нет. В изначальном выражении присваивания X := B нету


 
MBo ©   (2006-06-09 12:38) [38]

>скромное мнение
>Это старая история. Когда только изобрели громоотвод,

Это более старая история, которую придумал Свифт ;)


 
Думкин ©   (2006-06-09 12:51) [39]

> MBo ©   (09.06.06 12:38) [38]

Всеми   разделяется убеждение,   что  вареные  яйца  при
употреблении  их  в  пищу  испокон  веков разбивались с тупого конца; но дед нынешнего  императора, будучи ребенком,  порезал  себе палец за завтраком, разбивая  яйцо означенным  древним способом. Тогда император, отец ребенка, обнародовал  указ,  предписывающий  всем  его подданным под страхом строгого наказания  разбивать  яйца  с острого конца[35]. Этот закон до такой степени озлобил  население,  что,  по  словам  наших  летописей,  был причиной шести восстаний,  во время  которых один  император  потерял  жизнь,  а другой - корону[36].  Мятежи эти постоянно разжигались монархами Блефуску, а после их подавления  изгнанники всегда находили приют в этой империи. Насчитывают до одиннадцати тысяч фанатиков, которые в течение этого времени пошли на казнь, лишь  бы  не  разбивать яйца с острого конца. Были напечатаны сотни огромных томов, посвященных этой полемике, но книги Тупоконечников давно запрещены, и
вся  партия  лишена  законом  права  занимать  государственные должности. В течение  этих  смут императоры Блефуску часто через своих посланников делали нам  предостережения,  обвиняя нас  в церковном  расколе  путем  нарушения основного  догмата великого нашего пророка Люстрога, изложенного в пятьдесят четвертой  главе  Блундекраля  (являющегося  их  Алькораном).  Между тем это просто насильственное толкование  текста, подлинные слова которого гласят: Все  истинно  верующие да  разбивают  яйца  с того конца, с какого удобнее. Решение  же  вопроса: какой конец признать более удобным, по моему скромному
суждению,  должно  быть предоставлено совести каждого или, в крайнем случае, власти верховного судьи империи[37]. Изгнанные Тупоконечники возымели такую силу  при  дворе  императора Блефуску и нашли такую поддержку и поощрение со стороны  своих единомышленников внутри нашей страны, что в течение тридцати шести  лун  оба императора ведут кровавую войну с переменным успехом. За это время  мы  потеряли  сорок линейных кораблей и огромное число мелких судов с тридцатью  тысячами  лучших  моряков  и  солдат[38];  полагают,  что  потери неприятеля  еще значительнее.


 
Думкин ©   (2006-06-09 12:52) [40]

[35] "...разбивать яйца с острого конца."
    - Вражда между тупоконечниками и остроконечниками - это аллегорическое
изображение  борьбы  между  католиками и протестантами, заполнившей историю
Англии, Франции и других стран войнами, восстаниями, казнями.

[36] "...один император потерял жизнь, а другой - корону."
    - Имеются в виду Карл I Стюарт, казненный в 1649 г., и Иаков II Стюарт,
свергнутый с престола и изгнанный из Англии после революции 1688 г.



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

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

Наверх




Память: 0.57 MB
Время: 0.01 c
2-1150983945
AlexanderMS
2006-06-22 17:45
2006.07.09
Как работать с ресурсами в Delphi?


6-1133458989
ZeFiR
2005-12-01 20:43
2006.07.09
Вопрос по созданию веб-браузера...


2-1150648613
mctarik
2006-06-18 20:36
2006.07.09
Почему ничего не происходит при выполнении данного кода ...


3-1147104200
Nicky
2006-05-08 20:03
2006.07.09
как посчитать сумму через запрос


8-1138479991
GLText
2006-01-28 23:26
2006.07.09
Текст в OpenGL





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