Конференция "Прочее" » Оформление кода
 
  • ekto © (16.05.08 17:22) [0]
    Кто как пишет?

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

    или:

     with TMyForm.Create(Applicatio) do
       try
         ....
         ShowModal;
         ...
       finally
         Free;
       end;
  • clickmaker © (16.05.08 17:24) [1]
    ... do
    begin
     try
     ...
    end;
  • Сергей М. © (16.05.08 17:24) [2]
    Загадка для продвинутых - "найди три отличия в этих шматках кода")
  • Rouse_ © (16.05.08 17:32) [3]
    Если сделать отступ блока try после do то скомпиленный код будет работать в полтора раза медленней, поэтому первый вариант ;)
  • ekto © (16.05.08 17:45) [4]

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

    я так и думал
  • Дмитрий С (16.05.08 18:36) [5]
    Мне предпочтительней первый вариант.

    Только овнером я обычно выбираю другую форму.
  • Юрий Зотов © (16.05.08 18:48) [6]
    Была такая хохма (реально была). Два чела в нашей команде (назовем их А и Б) постоянно спорили о том, нужно ли после then писать begin на отдельной строке, или нет.

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

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

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

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

    :o)
  • Игорь Шевченко © (16.05.08 18:51) [7]
    with TMyForm.Create(Applicatio) do
       ShowModal;

    Я так пишу в большинстве случаев
  • Юрий Зотов © (16.05.08 18:54) [8]
    > Игорь Шевченко ©   (16.05.08 18:51) [7]

    with и do - лишние.
    :о)
  • Игорь Шевченко © (16.05.08 19:03) [9]
    Юрий Зотов ©   (16.05.08 18:54) [8]

    Во-первых, для ясности кода
    фразу TMyForm.Create(Application).ShowModal я буду долго переваривать
    Во-вторых, а вдруг потребуется вставить код промеж Create и ShowModal или Free, не дай Аллах, вызывать :)
  • Юрий Зотов © (16.05.08 19:09) [10]
    > Игорь Шевченко ©   (16.05.08 19:03) [9]

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

    ;o)
  • Игорь Шевченко © (16.05.08 19:22) [11]
    Юрий Зотов ©   (16.05.08 19:09) [10]


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


    Это вряд ли :)
  • Anatoly Podgoretsky © (16.05.08 19:27) [12]
    Не зарекайся.
  • DiamondShark © (16.05.08 19:53) [13]

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

    Даже если учесть, что есть caFree, то всё равно ахтунг.
  • Andy BitOff © (16.05.08 20:35) [14]
    А я видел так: with TMyForm.Create(Self) do; try; ShowModal; finally; Free; end;
    Всмысле, в одну строчку, видимо, чтобы сократить количество строк.
  • @!!ex © (16.05.08 20:56) [15]
    > чтобы сократить количество строк.

    бояцца, как бы у компьютера строчки не кончились? :))
  • Simpson © (16.05.08 21:28) [16]
    Одно время ходил сишный код в виде псевдо графики, там помойму кошка была нарисована))
  • Умище (16.05.08 21:51) [17]
    Всегда относящиеся к блоку открывающий/закрывающий оператор пишу на уровне блока, это позволяет всегда видеть, к чему относится блок:

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

  • Умище (16.05.08 21:53) [18]
    причем в обязательном порядке обрамляю блоки операторами
    begin..end;

    :

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

  • Игорь Шевченко © (16.05.08 22:02) [19]
    Умище   (16.05.08 21:53) [18]

    Все понимаю, а зачем try ... end еще в begin..end заворачивать ?
  • Умище (16.05.08 22:04) [20]
    Моя предпочитает блоки кода определять по ключевым словам begin..end
  • korneley © (16.05.08 22:06) [21]

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

    А как же [9]? ("во-вторых") ;)
  • Andy BitOff © (16.05.08 22:09) [22]
    А я всегда пишу begin...end, даже если внути выполняется одно действие, правда не всегда (сейчас глянул сырцы), причем begin пишу в той же строке, что и оператор. А все остальные конструкции внутри пишу с отступом, что позволяет видеть в каком блоке находится конструкция.

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


  • @!!ex © (16.05.08 22:14) [23]
    > А я всегда

    ...

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

    ЖЖошь. :)

    Я тоже почти всегда пишу begin...end. Причем begin в той же строчке что и оператор.
    Когда видишь end, то знаешь что он относится к оператору, т.к. около оператора всегда есть begin. очень удобно. смотреть не могу на код, где begin на отдельной строке.
  • Умище (16.05.08 22:16) [24]

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


    Видимо тебя воротит и от всех борландовских модулей...
  • @!!ex © (16.05.08 22:20) [25]
    > Видимо тебя воротит и от всех борландовских модулей...

    Да. Так и есть.
    К счастью я практически не работаю с VCL.
  • Игорь Шевченко © (16.05.08 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 © (16.05.08 23:02) [27]

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

    Я не о том. Между
    begin

    и
    try

    тоже можно что-нибудь вставить, или, не к ночи будь помянуто, между
    end

    и
    end

    :)). Таким приверженцам сеппуку, только грамотный каясяку поможет %)

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

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

  • korneley © (16.05.08 23:05) [28]
    каясяку = кайсяку. Хотя и так хорошо... :)
  • korneley © (16.05.08 23:13) [29]
    И совсем уже вдогонку: в BDS2006, до редакции под себя code templates, мне добраться не удалось. Никак. :( Только вглюч/отглюч. Может плохо искал...
  • Игорь Шевченко © (16.05.08 23:26) [30]
    korneley ©   (16.05.08 23:02) [27]

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


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


    View|Templates, правой кнопкой на Template и Edit ee :)
  • korneley © (16.05.08 23:32) [31]

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

    !!! Дык!!! Как же!!! Ух... Я все Tools->Options облазил, а оно, вона как %) Спасибо.
  • Eraser © (16.05.08 23:52) [32]
    и в C (C++, php, java и т.п.) и в Паскале операторные скобки размещаю в отдельных строках.
    разработчики VS и CDS со мной согласны )
  • Anatoly Podgoretsky © (16.05.08 23:58) [33]
    > Игорь Шевченко  (16.05.2008 22:42:26)  [26]

    Это не фигово, если работа тарифицируется в строках.
    Сообственно в чем будет тарифицироваться, того много и делать.
  • Loginov Dmitry © (17.05.08 00:12) [34]
    > Когда видишь end, то знаешь что он относится к оператору,
    > т.к. около оператора всегда есть begin. очень удобно. смотреть
    > не могу на код, где begin на отдельной строке.


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

    Сам пару лет ставил ставил begin после оператора. Смотреть не мог на код, где begin и end на одном уровне.
    Однако переучился (незаметно причем как-то), и теперь ситуация обратная - код с begin после оператора не воспринимается.
  • korneley © (17.05.08 00:12) [35]

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

    :) Напомнило: "план программиста - 1.5 _отлаженных_ строки в день" (не шутка) Как слова-то значения поменяли: и "план" и "отлаженных"... :)
  • Knight © (17.05.08 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 © (17.05.08 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 © (17.05.08 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 © (17.05.08 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 © (17.05.08 00:30) [40]
    > Knight ©   (17.05.08 00:23) [38]

    Но вот в случае с else end не очевиден. В таком случае else и далее с новой строки. ИМХО
  • Loginov Dmitry © (17.05.08 00:31) [41]
    > В таком всегда путался.. посему и пришёл к


    [37] тоже не очень нравится. Лично для меня,

      begin
       ...
      end else  
      begin

      end;


    воспринимается лучше.
  • korneley © (17.05.08 00:35) [42]
    Вот что Widescreen с людьми делает :)
  • Knight © (17.05.08 00:41) [43]
    > [40] Andy BitOff ©   (17.05.08 00:30)
    > Но вот в случае с else end не очевиден.

    Очень даже очевиден...

    if ... then begin // видишь begin
     а ниже
     видишь
     'end' , т.к. ни над ним ни под ним
     ничего нет и он сразу
     выделяется глазом
    end else begin  // и рядом сразу else, понятно что есть вариант, а за ним снова begin
     т.е.
     вариант
     не в одну строку
    end; // а если точка с запятой, то всё кончилось.

  • TIF © (17.05.08 00:46) [44]

    > а если точка с запятой, то всё кончилось.


         ...
       end;
     end; //всё закончилось
    end. // наступил конец света :-)

  • Loginov Dmitry © (17.05.08 00:46) [45]
    > Как вариант использую частенько:
    >
    >
    > if s='aaa'
    > then begin
    >   if f='bbb'
    >     then begin
    >       ...
    >     end;
    > end
    > else begin
    > ...
    > end;


    А вот тот же код, но оформленный в стиле VCL:

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



    В каком варианте читабильность лучше?
  • TIF © (17.05.08 00:51) [46]

    > В каком варианте читабильность лучше?


    Вот я страшно ннавижу эти

    a = b вместо a=b

    c := d вместо c:=d

    Ну вот не признаю я это! Вот что хотите делайте...
  • Knight © (17.05.08 01:29) [47]
    > [46] TIF ©   (17.05.08 00:51)
    > Вот я страшно ннавижу эти

    Чем   шире   всё   расставлено . .     тем    шире   кругозор   программиста %))))

    .. и тем крепче у него шея :))))))
  • Германн © (17.05.08 01:41) [48]

    > Юрий Зотов ©   (16.05.08 18:48) [6]

    И всё равно не переубедишь! begin должен быть в той же строчке, в которой находится условие.
  • Anatoly Podgoretsky © (17.05.08 01:51) [49]
    > TIF  (17.05.2008 00:51:46)  [46]

    Говоришь, что хотим, да ты даже и не представляешь, что мы можем сделать :-)
  • Германн © (17.05.08 01:58) [50]

    > TIF ©   (17.05.08 00:51) [46]
    >
    >
    > > В каком варианте читабильность лучше?
    >
    >
    > Вот я страшно ннавижу эти
    >
    > a = b вместо a=b
    >
    > c := d вместо c:=d
    >

    Первое - НЕТ. Второе ДА. Т.е. при сравнении я всегда ставлю пробелы, при присвоении убираю пробелы.
    Но "на вкус и цвет - товарищей нет", как известно.
  • ketmar © (17.05.08 07:48) [51]
    мда. а я теперь всё больше { и } пишу.

    ---
    Understanding is not required. Only obedience.
  • Loginov Dmitry © (17.05.08 09:39) [52]
    > И всё равно не переубедишь! begin должен быть в той же строчке,
    > в которой находится условие.


    Покодь на D2007.
    Она переубеждает :)
  • SPeller (17.05.08 13:36) [53]
    Пишу бегины всегда на новой строке. А так же, такие структуры
    if then ...
    begin
     ...
    end
    else
    begin
     ...
    end;


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


    взглянув только на первые буквы гораздо проще, чем остальные варианты написания. Такое мое имхо.

    По части пробелов между операторами - ставлю всегда кроме пробелов вокруг скобок. Ибо мне так быстрее понимать незнакомый код.

    Научился строго следовать правилам в одной фирме, где была командная разработка. В процессе работы прочувствовал что чужие исходники так читать проще. А потом и свои исходники, оформленные по такому принципу, стал читать быстро и легко.
  • TUser © (17.05.08 14:24) [54]
    в одну строчку пишу всегда
  • Andy BitOff © (17.05.08 14:38) [55]
    > SPeller   (17.05.08 13:36) [53]

    Эргономику почитай.
    Твои затраты на чтение трех строчек не сопоставимы с затратами, когда нет необходимости читать, когда просто знаешь, что там дальше.
    Если написано:
    if then ...
    begin
    ...
    end
    else
    begin
    ...
    end;

    то прочесть ПРИДЕТСЯ все.

    В то время как код:
    if then begin
    ...
    end
    else begin
    ...
    end;


    более эргономичен, т.к. все бегины пропускаются при чтении.


    > Knight ©   (17.05.08 00:41) [43]

    По этой же причине, я и говорил, что else не очевиден, т.к. при просмотре, его придется искать глазами в середине строки.
  • Юрий Зотов © (17.05.08 15:03) [56]
    > все бегины пропускаются при чтении

    Вот ЭТО как раз и плохо. Очень плохо. Потому что в большом коде, да еще при длинном if становится легко этот begin не заметить (а еще хуже - не написать). Результат может оказаться плачевным.

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

    Аналог из моей собственной (причем совсем свежей) практики (java):
    if (здесь довольно длинное условие);
    здесь что-то еще


    Программа работает неправильно. В процессе отлова добираюсь до этого места и ставлю останов на первой строке. Прихожу на останов, проверяю значения переменных. Вижу, что условие не выполняется и вторая строка должна быть пропущена - а она не пропускается!!! Блин, в чем фокус? И только через некоторое время замечаю пустой оператор в конце длинного if (кто-то случайно поставил точку с запятой, а ее там быть не должно).

    Меняю параметры форматирования кода и форматирую. Получаю вот что:
    if (здесь довольно длинное условие)
       ;
    здесь что-то еще


    Пустой оператор сразу бросается в глаза. Вот ЭТО - действительно эргономика.
  • SPeller (17.05.08 15:06) [57]

    > Эргономику почитай

    Спорить тут можно до посинения, так же как про амд вс интел и прочая ) Мне когда нужно быстро, одним взглядом окинуть незнакомый код - проще когда if в две, а else в три строки. Ну не люблю я чересчур компактные исходники, когда при отдалении глаз от экрана на метр они превращаются в одно большое нагромождение букав. Когда есть пробелы и многострочные операторы блоков - код чисто визуально обретает осмысленные очертания. Лично для меня это важно, мне так удобнее читать код, я так лучше воспринимаю. Я в первую очередь обращаю внимание на первый символ в строке, и терпеть не могу, когда там не начинается что-то, несущее логическую нагрузку, а расположены разные вспомогательные второстепенные конструкции. Потому что вместо того, чтобы продолжить смотреть первые символы следующей строки нужно вчитываться дальше "что же там?". Это, конечно, относится к структуре кода. Когда начинаются разные операции-вычисления и их нужно прочитать, то, конечно, читается всё что написано.

    Не претендую на истину, каждому своё, только рассказываю как я к этому всему отношусь )
  • mirage (17.05.08 15:24) [58]
    >[56] Юрий Зотов © (2008-05-17 15:03:00)
    а у паскаля вообще страшный синтаксис в этом плане. и не только у него. не зря Вирт бегины повыкидывал из Оберона.

    ---
    Understanding is not required. Only obedience.
  • Andy BitOff © (17.05.08 15:31) [59]
    > Юрий Зотов ©   (17.05.08 15:03) [56]
    > Вот ЭТО как раз и плохо. Очень плохо. Потому что в большом
    > коде, да еще при длинном if становится легко этот begin
    > не заметить (а еще хуже — не написать). Результат может
    > оказаться плачевным.

    Юрий, для того что бы такого не происходило придумали Template ;) Не знаю как на java, но уж в Delphi-то их сам Бог велел использовать, т.к. операторные скобки слишком длиные для набора вручную (опять же эргономично ;)). Я, например, когда набираю if у меня у код вставляется if then, когда ifb — if then begin ... end;, а когда ifbe —
    if then begin
    ...
    end
    else begin
    ...
    end;


    Ну, и таких шаблонов достаточно для стандартных конструкций, что позволяет раз настроив уже не задумываться над оформление и поиском бегинов.
    Так же у меня настроено и несколько корпоративных стилей. Достаточно только указать какой шаблон использовать и я при наборе ifbe получу конструкцию нужного мне вида.
    Вот Игорю из-за своей, как он выразился, лени, пришлось переучиваться, пусть это и не так сильно сказалось на времени, но все-таки привычка штука сильная и менять их (привычки) обычно сложно. А не поленился бы, потратил некоторое время на настройку и работал бы так же как и раньше. Я не говорю, что он сейчас плохо работает ;) упаси Бог, я имею в виду, что переход на другую IDE был бы менее заметен.
  • Mystic © (17.05.08 15:36) [60]
    Я пишу обычно так:

    with TMyForm.Create(Applicatio) do
    try
      ....
      ShowModal;
      ...
    finally
      Release;
    end;
  • SPeller (17.05.08 15:42) [61]

    > того что бы такого не происходило придумали Template

    они в д6 или д7 есть? )
  • Andy BitOff © (17.05.08 15:52) [62]
    > SPeller   (17.05.08 15:42) [61]

    Я пользую Castalia (http://www.twodesks.com/castalia/index.html) и там они есть ;). Приемлемый продукт, за приемлемую цену.
    Я, кстати, до сих пор на D7 сижу.
  • Knight © (17.05.08 16:19) [63]
    > [56] Юрий Зотов ©   (17.05.08 15:03)

    По поводу длиииинннных условий.. всегда делаю такя. чтобы они были полностью в поле зрения... и это единственный случай когда переношу then..

    if (dfdfdfdfdfdfd
     dfdfdfdfdfddfdfd
     dfdfdfdfdfdfdfd)
    then begin
     ....
    end;
  • Игорь Шевченко © (17.05.08 16:24) [64]
    Mystic ©   (17.05.08 15:36) [60]

    Я сильно извиняюсь, а зачем Release именно в этом случае ?
  • Германн © (17.05.08 16:27) [65]

    > Игорь Шевченко ©   (17.05.08 16:24) [64]

    Чтоб никто не догадался?
  • БарЛог © (17.05.08 19:39) [66]
    Applicatio - это по-итальянски? :)
  • Interior (17.05.08 20:40) [67]

    > Andy BitOff ©   (17.05.08 14:38) [55]
    > > SPeller   (17.05.08 13:36) [53]Эргономику почитай.Твои
    > затраты на чтение трех строчек не сопоставимы с затратами,
    >  когда нет необходимости читать, когда просто знаешь, что
    > там дальше.Если написано:if then ...begin ...endelsebegin
    > ...end;то прочесть ПРИДЕТСЯ все.В то время как код:if then
    > begin ...endelse begin ...end;более эргономичен, т.к. все
    > бегины пропускаются при чтении.> Knight ©   (17.05.08 00:
    > 41) [43]По этой же причине, я и говорил, что else не очевиден,
    >  т.к. при просмотре, его придется искать глазами в середине
    > строки.

    Ни фига
    гораздо лучше когда
    begin
    end
    друг над другом
  • Andy BitOff © (17.05.08 21:13) [68]
    > Interior   (17.05.08 20:40) [67]
    > Ни фига

    Такая аргументация, чаще свидетельствует о том, что аргументов нет.
  • Умище (17.05.08 21:21) [69]
    Мне близок стиль, описанный на RSDN:
    http://www.rsdn.ru/article/mag/200401/codestyle.XML
  • TIF © (17.05.08 21:23) [70]
    Кстати, тут ссылку вот эту ещё не давали, вроде как?

    http://www.delphikingdom.com/asp/viewitem.asp?catalogid=802

    Мда, если ещё это изучить, то разногласия будут увеличиваться в геометрической прогрессии
  • TIF © (17.05.08 21:25) [71]

    > Interior   (17.05.08 20:40) [67]


    А вот ответ на это из статьи на Королевстве:

    Оператор while

    Неправильно
     while x < j  do begin
       DoSomething;
       DoSomethingElse;
     end;



    Правильно
     while x < j do
     begin
       DoSomething;
       DoSomethingElse;
     end;  
     while x < j do
       Something;

  • Knight © (17.05.08 21:41) [72]
    Тема себя исчерпала... читайте стандарты и... затачивайте их под себя :)))
    Ибо это не правило, это рекомендации. Если бы это было жёстко, то форматировалось бы на уровне редактора кода, как в QBasic все функции приводятся к заглавным и выставляются все нужные интервалы.

    Так-что не убивайте в себе творческое начало... пока не обрезали %))
  • Умище (17.05.08 22:38) [73]
    Стандарт стилевого оформления исходного кода DELPHI -

    http://www.citforum.ru/programming/delphi/style_delphi/

    Оригинальная статья Charles Calvert -
    http://dn.codegear.com/article/10280
  • Eraser © (17.05.08 23:39) [74]
    > [70] TIF ©   (17.05.08 21:23)
    > Кстати, тут ссылку вот эту ещё не давали, вроде как?
    >
    > http://www.delphikingdom.com/asp/viewitem.asp?catalogid=802

    отличная статья, тоже всегда привожу её в пример и сам следую правилам, за исключением, быть может подобных фишек
    {************************************************************}
    {                                                            }
    {                 Модуль ХХХ                                 }
    {       Copyright (c) 2001  ООО ХХХХ                         }
    {               отдел/сектор                                 }
    {                                                            }
    {  Разработчик: ХХ ХХ                                        }
    {  Модифицирован: 25 июня 2001                               }
    {                                                            }
    {************************************************************}

  • Игорь Шевченко © (17.05.08 23:51) [75]
    Eraser ©   (17.05.08 23:39) [74]


    > отличная статья, тоже всегда привожу её в пример и сам следую
    > правилам


    "Все файлы модулей, созданные в организации ХХХ должны иметь префикс ХХХ " - спорное утверждение. Файл должен называться так, чтобы было понятно, что он содержит, а не в каком месте он создан.
    Вот например - Unit1.pas - просто и не создает неясности.

    "Имя модуля (Unit Name);
    Объявление включаемых файлов (Include files);
    Секцию интерфейса (Interface section);
    "

    Насчет включаемых файлов - тоже спорный момент. Файлы бывает нужно включить в конкретном месте модуля и только там.
    Разумно включать в указанном месте те файлы, которые содержат определения и ничего более.

    "Директивы компилятора не следует напрямую включать в исходный код. Для этого следует воспользоваться определением включений и подключить глобальный для проекта файл с директивами компилятора:"

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

    "Следует обратить внимание на элементы заголовка:
    Назначение модуля;
    Копирайт;
    Разработчик;
    Дата последней модификации для исполняемой версии.
    "

    Максимум, что надо писать, по моему мнению, это назначение и автора. Дату последней модификации удобно смотреть в проводнике, логах системы контроля версий и т.п.

    В общем, взяли Калверта и решили его упуританить. Это народ любит - упуританить.

    Бойтесь более правоверных, чем Аллах :)
  • Andy BitOff © (18.05.08 00:36) [76]
    Да вобще-то «Стандарт» это сильно сказано, это рекомендации, а за стандартом следят строже. Если бы это был стандарт, то, как сказал Knight © [72], его бы встроили в IDE.
  • {RASkov} © (18.05.08 01:24) [77]
    Как хочу так и пишу.... нет такого понятия правильно или не правильно.
    Или вот: Буду главным над программистами - то как я скажу так и будет правильно, а если буду просто работать программистом у другого главного - то как он скажет...
    Ветка смешная.... каждый стремится доказать что правильно так как он делает, остальное неправильно.... Этот пост тоже угарный)
    Одно радует по ветке, что я, оказывается, не один такой "извращенец" над форматированием :)
    А вообще спор не о чем... как часто бывает тут...
    :о)
  • {RASkov} © (18.05.08 01:26) [78]
    > Как хочу так и пишу.... нет такого понятия правильно или не правильно.

    Это к форматированию, но не по синтаксису :)
  • ekto © (18.05.08 11:34) [79]
    ну, а во-всех ли случаях вы пишите одинаково?
    напр:
     if что-то then
       ...
     else
       ...
     else
       ...

    или так(красивше, с виду):
     if что-то then
       ...
       else if ... then
         ....
         else if then
            ...
           else if then
              ...

    это, когда понятно, что все эти ифы - просто case.
  • Умище (18.05.08 11:41) [80]

    > {RASkov} ©   (18.05.08 01:24) [77]
    > Как хочу так и пишу.... нет такого понятия правильно или
    > не правильно.


    Зато есть понятие того, что оформление кода должно соответствовать определенным целям:
     - Читабельность
     - Единообразие оформления
     - Понятность

    Так что вот это -

    > Или вот: Буду главным над программистами - то как я скажу
    > так и будет правильно, а если буду просто работать программистом
    > у другого главного - то как он скажет...Ветка смешная...
    > . каждый стремится доказать что правильно так как он делает,
    >  остальное неправильно.... Этот пост тоже угарный)Одно радует
    > по ветке, что я, оказывается, не один такой "извращенец"
    > над форматированием :)А вообще спор не о чем... как часто
    > бывает тут...


    несколько необдуманное высказывание.

    То, что пока не существует стандарта, не означает, что его не будет.
    На многие вещи, о которых ты и я ,может быть, и не подозреваем, также есть стандарты. Пусть ведомственные либо в отдельно взятом государстве, но они есть.
    Думаю, что и на стиль оформления программного кода так же такие стандарты появятся.
  • old_lamer (18.05.08 11:47) [81]

    > Умище   (18.05.08 11:41) [80]


    > На многие вещи, о которых ты и я ,может быть, и не подозреваем,
    >  также есть стандарты. Пусть ведомственные либо в отдельно
    > взятом государстве, но они есть.
    > Думаю, что и на стиль оформления программного кода так же
    > такие стандарты появятся.

    гы, и будет так:

    > Rouse_ ©   (16.05.08 17:32) [3]
    > Если сделать отступ блока try после do то скомпиленный код
    > будет работать в полтора раза медленней, поэтому первый
    > вариант ;)
  • Умище (18.05.08 11:50) [82]

    > гы, и будет так:


    Не понятно, о чем спич?
    О том, что Розыч прикалывается?
  • Anatoly Podgoretsky © (18.05.08 11:53) [83]
    > ekto  (18.05.2008 11:34:19)  [79]

    Если тебя послушать, то получается, что case надо писать так.

    case
      1:   ...
        2:
          3:


    так у нас и не такие извращенцы встеречалисб

    case
      1:   ...
        2:
    3:
     4:
                       5:
              6:


    Совсем красиво, но гильотина полезнее и результативнее
  • Anatoly Podgoretsky © (18.05.08 11:55) [84]
    > Умище  (18.05.2008 11:41:20)  [80]

    Что компенсируется необязательностью их исполнения.
  • Умище (18.05.08 12:07) [85]

    > Anatoly Podgoretsky ©   (18.05.08 11:55) [84]
    > > Умище  (18.05.2008 11:41:20)  [80]Что компенсируется необязательностью
    > их исполнения.


    Как только появятся требования, неисполнение которых будет по карману бить, так сразу всю необязательность как рукой снимет-)
  • Anatoly Podgoretsky © (18.05.08 12:39) [86]
    > Умище  (18.05.2008 12:07:25)  [85]

    Все сделать можно, но менталитет то куда денешь, а он веками создавался в этой части.
  • Mystic © (18.05.08 12:57) [87]
    > Я сильно извиняюсь, а зачем Release именно в этом случае
    > ?


    Просто привычка освобождать формы не через Free(), а Release().
  • {RASkov} © (18.05.08 13:33) [88]
    > [80] Умище   (18.05.08 11:41)
    > Так что вот это -  
    ...... [77]
    > несколько необдуманное высказывание.

    Как раз обдуманное, на данный момент, так как:

    > То, что пока не существует стандарта

    Сам же говоришь...
    :)
  • _mirage (18.05.08 17:24) [89]
    and i like to write it backwards. and upside down.

    ---
    Understanding is not required. Only obedience.
  • _mirage (18.05.08 17:25) [90]
    ˙sıɥʇ ǝʞıʃ

    ---
    Understanding is not required. Only obedience.
 
Конференция "Прочее" » Оформление кода
Есть новые Нет новых   [134435   +8][b:0.001][p:0.006]