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

Вниз

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

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

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

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


 
Loginov Dmitry ©   (2008-05-17 00:31) [41]

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


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

  begin
   ...
  end else  
  begin

  end;

воспринимается лучше.


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

Вот что Widescreen с людьми делает :)


 
Knight ©   (2008-05-17 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 ©   (2008-05-17 00:46) [44]


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


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


 
Loginov Dmitry ©   (2008-05-17 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 ©   (2008-05-17 00:51) [46]


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


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

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

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

Ну вот не признаю я это! Вот что хотите делайте...


 
Knight ©   (2008-05-17 01:29) [47]

> [46] TIF ©   (17.05.08 00:51)
> Вот я страшно ннавижу эти

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

.. и тем крепче у него шея :))))))


 
Германн ©   (2008-05-17 01:41) [48]


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

И всё равно не переубедишь! begin должен быть в той же строчке, в которой находится условие.


 
Anatoly Podgoretsky ©   (2008-05-17 01:51) [49]

> TIF  (17.05.2008 00:51:46)  [46]

Говоришь, что хотим, да ты даже и не представляешь, что мы можем сделать :-)


 
Германн ©   (2008-05-17 01:58) [50]


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

Первое - НЕТ. Второе ДА. Т.е. при сравнении я всегда ставлю пробелы, при присвоении убираю пробелы.
Но "на вкус и цвет - товарищей нет", как известно.


 
ketmar ©   (2008-05-17 07:48) [51]

мда. а я теперь всё больше { и } пишу.

---
Understanding is not required. Only obedience.


 
Loginov Dmitry ©   (2008-05-17 09:39) [52]

> И всё равно не переубедишь! begin должен быть в той же строчке,
> в которой находится условие.


Покодь на D2007.
Она переубеждает :)


 
SPeller   (2008-05-17 13:36) [53]

Пишу бегины всегда на новой строке. А так же, такие структуры
if then ...
begin
 ...
end
else
begin
 ...
end;

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

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

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

Научился строго следовать правилам в одной фирме, где была командная разработка. В процессе работы прочувствовал что чужие исходники так читать проще. А потом и свои исходники, оформленные по такому принципу, стал читать быстро и легко.


 
TUser ©   (2008-05-17 14:24) [54]

в одну строчку пишу всегда


 
Andy BitOff ©   (2008-05-17 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 не очевиден, т.к. при просмотре, его придется искать глазами в середине строки.


 
Юрий Зотов ©   (2008-05-17 15:03) [56]

> все бегины пропускаются при чтении

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

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

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

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

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

Пустой оператор сразу бросается в глаза. Вот ЭТО - действительно эргономика.


 
SPeller   (2008-05-17 15:06) [57]


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

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

Не претендую на истину, каждому своё, только рассказываю как я к этому всему отношусь )


 
mirage   (2008-05-17 15:24) [58]

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

---
Understanding is not required. Only obedience.


 
Andy BitOff ©   (2008-05-17 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 ©   (2008-05-17 15:36) [60]

Я пишу обычно так:

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


 
SPeller   (2008-05-17 15:42) [61]


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

они в д6 или д7 есть? )


 
Andy BitOff ©   (2008-05-17 15:52) [62]

> SPeller   (17.05.08 15:42) [61]

Я пользую Castalia (http://www.twodesks.com/castalia/index.html) и там они есть ;). Приемлемый продукт, за приемлемую цену.
Я, кстати, до сих пор на D7 сижу.


 
Knight ©   (2008-05-17 16:19) [63]

> [56] Юрий Зотов ©   (17.05.08 15:03)

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

if (dfdfdfdfdfdfd
 dfdfdfdfdfddfdfd
 dfdfdfdfdfdfdfd)
then begin
 ....
end;


 
Игорь Шевченко ©   (2008-05-17 16:24) [64]

Mystic ©   (17.05.08 15:36) [60]

Я сильно извиняюсь, а зачем Release именно в этом случае ?


 
Германн ©   (2008-05-17 16:27) [65]


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

Чтоб никто не догадался?


 
БарЛог ©   (2008-05-17 19:39) [66]

Applicatio - это по-итальянски? :)


 
Interior   (2008-05-17 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 ©   (2008-05-17 21:13) [68]

> Interior   (17.05.08 20:40) [67]
> Ни фига

Такая аргументация, чаще свидетельствует о том, что аргументов нет.


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

Мне близок стиль, описанный на RSDN:
http://www.rsdn.ru/article/mag/200401/codestyle.XML


 
TIF ©   (2008-05-17 21:23) [70]

Кстати, тут ссылку вот эту ещё не давали, вроде как?

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

Мда, если ещё это изучить, то разногласия будут увеличиваться в геометрической прогрессии


 
TIF ©   (2008-05-17 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 ©   (2008-05-17 21:41) [72]

Тема себя исчерпала... читайте стандарты и... затачивайте их под себя :)))
Ибо это не правило, это рекомендации. Если бы это было жёстко, то форматировалось бы на уровне редактора кода, как в QBasic все функции приводятся к заглавным и выставляются все нужные интервалы.

Так-что не убивайте в себе творческое начало... пока не обрезали %))


 
Умище   (2008-05-17 22:38) [73]

Стандарт стилевого оформления исходного кода DELPHI -

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

Оригинальная статья Charles Calvert -
http://dn.codegear.com/article/10280


 
Eraser ©   (2008-05-17 23:39) [74]

> [70] TIF ©   (17.05.08 21:23)
> Кстати, тут ссылку вот эту ещё не давали, вроде как?
>
> http://www.delphikingdom.com/asp/viewitem.asp?catalogid=802

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


 
Игорь Шевченко ©   (2008-05-17 23:51) [75]

Eraser ©   (17.05.08 23:39) [74]


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


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

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

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

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

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

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

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

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

Бойтесь более правоверных, чем Аллах :)


 
Andy BitOff ©   (2008-05-18 00:36) [76]

Да вобще-то &laquo;Стандарт&raquo; это сильно сказано, это рекомендации, а за стандартом следят строже. Если бы это был стандарт, то, как сказал Knight © [72], его бы встроили в IDE.


 
{RASkov} ©   (2008-05-18 01:24) [77]

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


 
{RASkov} ©   (2008-05-18 01:26) [78]

> Как хочу так и пишу.... нет такого понятия правильно или не правильно.

Это к форматированию, но не по синтаксису :)


 
ekto ©   (2008-05-18 11:34) [79]

ну, а во-всех ли случаях вы пишите одинаково?
напр:
 if что-то then
   ...
 else
   ...
 else
   ...

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

это, когда понятно, что все эти ифы - просто case.


 
Умище   (2008-05-18 11:41) [80]


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


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

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

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


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

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



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

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

Наверх




Память: 0.64 MB
Время: 0.051 c
2-1212173264
Pi:=3.14...
2008-05-30 22:47
2008.06.29
Реестр


15-1211024318
may be I am noob...
2008-05-17 15:38
2008.06.29
Вопрос по Apache (.htaccess)


2-1212493835
Igor
2008-06-03 15:50
2008.06.29
Treeview


2-1212586787
Ultimate
2008-06-04 17:39
2008.06.29
Слежка за буфером обмена...


2-1212587348
Михаил
2008-06-04 17:49
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский