Конференция "Прочее" » Оформление кода
 
  • 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 был бы менее заметен.
 
Конференция "Прочее" » Оформление кода
Есть новые Нет новых   [134435   +9][b:0][p:0.002]