Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Свитки
  
 

Фильтр по датам

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  11:34[Войти] | [Зарегистрироваться]

Обсуждение материала
Стандарт стилевого оформления исходного кода DELPHI
Полный текст материала


Цитата или краткий комментарий:

«... Этот стандарт документирует стилевое оформление для форматирования исходного кода Delphi. Оригинал статьи создан Чарльзом Калвертом и расположен на "Borland Community site". В стандарте использованы материалы команды разработчиков Delphi, сообщества разработчиков библиотеки JEDI. Стандарт так же дополнен некоторыми правилами, созданными на основе собственного опыта разработки. ...»


Важно:
  • Страница предназначена для обсуждения материала, его содержания, полезности, соответствия действительности и так далее. Смысл не в разборке, а в приближении к истине :о) и пользе для всех.
  • Любые другие сообщения или вопросы, а так же личные эмоции в адрес авторов и полемика, не относящаяся к теме обсуждаемого материала, будут удаляться без предупреждения авторов, дабы не мешать жителям нормально общаться.
  • При голосовании учитывайте уровень, на который расчитан материал. "Интересность и полезность" имеет смысл оценивать относительно того, кому именно предназначался материал.
  • Размер одного сообщений не должен превышать 5К. Если Вам нужно сказать больше, сделайте это за два раза. Или, что в данной ситуации правильнее, напишите свою статью.
Всегда легче осудить сделанное, нежели сделать самому. Поэтому, пожалуйста, соблюдайте правила Королевства и уважайте друг друга.



Добавить свое мнение.

Результаты голосования
Оценка содержания

  Содержит полезные и(или) интересные сведения
[1]1885.7%
 
  Ничего особенно нового и интересного
[2]314.3%
 
  Написано неверно (обязательно укажите почему)
[3]00%
 
Всего проголосовали: 21

Оценка стиля изложения

  Все понятно, материал читается легко
[1]1995%
 
  Есть неясности в изложении
[2]15%
 
  Непонятно написано, трудно читается
[3]00%
 
Всего проголосовали: 20




Смотрите также материалы по темам:
[Object Pascal , стандартные процедуры и функции]

Комментарии жителей
Отслеживать это обсуждение

Всего сообщений: 31

30-03-2009 03:49
>>> А какие обоснованные гипотезы будут насчёт того, почему редактор C++ из Visual Studio тоже делает это? ;)
Про него не скажу, так как не знаю ;-)

>>> И ещё вопрос из серии тупых: а что, в VB нельзя вставлять в программу комментарии? :-P
Можно. Скажу больше, есть возможности и на формат немного повлиять (например, есть признак продолжения строки). Но это не значит, что весь код хранится именно в виде текста. Это означает только то, что есть некая часть, которая хранится в том виде, как она введена пользователем.

А фраза про гипотезу была введена потому, что, с моей точки зрения, тот функционал, который реализован в VBA (в частности, при вводе построчная прекомпиляция или просто проверка с последующим автоформатированием) мне бы удобнее было бы реализовать именно так.

Вот если бы в VBA была возможность отключения автоформатирования (с сохранением возможности работы), тогда бы гипотеза явно оказалась неверна.
 Geo


30-03-2009 02:43
Geo:

А какие обоснованные гипотезы будут насчёт того, почему редактор C++ из Visual Studio тоже делает это? ;)

И ещё вопрос из серии тупых: а что, в VB нельзя вставлять в программу комментарии? :-P


30-03-2009 02:00
>>> Даже MS VBA это делает...
Для VBA это жизненная необходимость. Это же интерпретатор. Для ускорения работы, судя по внешним признакам, введенный текст сразу компилируется в некий промежуточный "байт-код", который и хранится. А текст на ЯП, сйдя по всему, восстанавливается из этого байт-кода. Естественно, при этом идет форматирование по стандартному шаблону, так как оформление, введенное пользователем, в полной мере не сохраняется.

P.S. Из разряда обоснованных гипотез.
 Geo


28-03-2009 10:52
Даже MS VBA это делает...
Лучше бы он этого не делал.
Мне вот неудобно читать код оформленный в стиле Borland (слишком много пробелов) и если бы оно было впаяно в IDE, то пришлось бы искать способ его отключать и всё равно ставить какую-то надстройку.
 DRON


28-03-2009 10:21
Странно, что IDE Delphi само не форматирует код как надо.
Даже MS VBA это делает...
 LA


12-08-2008 06:09
>>> удручает тем что не всегда ясно, а чей собственно end.
Вообще-то, допускается при необходимости использование вот такого оформления (я, естественно, не про пробелы; пробелы расставляю так, как привык):

  while CycleCondition do
    begin
    // ...
    if Condition
    then
      begin
      // ...
      end; // if
    // ...
    end;  // while


Хотя, конечно же, лучше, когда "парные скобки, как блочные, так и арифметические" находятся "в поле зрения".
 Geo


12-08-2008 05:59
Однозначно согласен, стандарты нужны. Но вот конструкции типа
  begin
    if выражение_символов_на_50-60 then begin
    .....
  end;
удручает тем что не всегда ясно, а чей собственно end. Толи отступы сбились, толи я что-то пропустил,толи кто-то код правил. Парные скобки, как блочные, так и арифметические всегда должны быть в поле зрения.


11-02-2008 23:53
Geo:

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


11-02-2008 12:42
to Sasvi:
Патетику опустим, а в остальном...

Если Вы действительно хотите заявить о своем продукте, то зачем это делать такими спамерскими способами (вклиниваясь в обсуждение, публикуя мейл)? Вы можете сделать это более нормальными способами. Для этого на Королевстве имеется раздел Полигон. Свяжитесь с Еленой Филипповой и скажите, что имете желание выложить на Полигон свои наработки. Пишите небольшое описание и выкладывайте. Вы же все равно собираетесь распространять свой продукт как FreeWare. А публикация на Королевстве Delphi выглядит все же серьезнее, чем просто упомянуть о своих достижениях в обсуждении.

P.S. Услуга размещения материалов на Полигоне тоже FreeWare ;-)
 Geo


17-01-2008 10:33
В тексте упущена важная, на мой взгляд мелочь - использование единственного и множественного числа. Например, у Borland модули компонентов всегда имеют множественное число: Controls, Dialogs, Menus, а модули форм - единственное: MainForm, AboutForm. Аналогично для индексированных свойств, списков и коллекций.


15-02-2007 00:37
Профессионально программирую много лет, с самого выхода Delphi, написал почти 1 000 000 строк кода.
За это время стиль менялся много раз, но в конце пришел к тому же, что пишет Чарльз Карлверт.

На мой взгляд записи типа
if a > b then begin
  a := 0 end
else if b > a then begin
  a := 1
end;
нормальными людми воспринимаются с большим трудом.
Хотя автор всегда считает это самым клевым стилем.

Убедить молодые горячие головы тяжело, но может кто-нибудь умный и согласится.
Те кто программирует меньше меня, не извращайтесь!!!
Лет эдак через 10 меня обязательно поймете!!!
А пока послушайте старика Калверта, он совсем не дурак.


14-02-2007 09:40
Выдернули же из небытия полемикообразующую статью. Ну, здесь сейчас такое начнется... ;-)

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

Человек -- это такое существо, которое привыкнет к любому стилю. Но вот только у всех программистов одного коллектива должен быть один единственный стиль (пусть безобразно, но однообразно).
 Geo


14-02-2007 08:40
Мы в конторе утвердили


begin
if _condition_    
    then begin
          _operator1_;
          _operator2_;
         end
    else begin
          _operator3_;
          _operator4_;
         end;

if _condition_
    then _operator1_
    else _operator2_;


case _swith_ of
      _value1_:  begin
                  _operator1_;
                  _operator2_;
                 end;
      _value2_:  begin
                  _operator3_;
                  _operator4_;
                 end;
      else       begin
                  _operator5_;
                  _operator6_;
                 end;
      end;
end;


Условие, переходы, конец видно, а операторные скобки - побоку.
Но сначала новички знакомятся с этой статьей.


14-02-2007 04:55
А мне за

if a < b then begin


просто хочется убить того, кто написал. Окажись в одном месте куча коротких операторных блоков и разобрать там уже ничего нельзя. Целесообразно только в коротких функциях вида:


procedure Proc(c:Boolean);
begin
if b then begin
  DoThis;
  DoThat;
end;
DoSomthingBeforeExit;
end



вообще жаль что Borland не перенял у оберона такую полезную штуку, как полный отказ от begin - сделали бы любой оператор комбинированым:

По-моему Оберон это полная ахинея и за отсутствие операторных блоков (пары begin end читаются лучше) и за регистрозависимость, которая убивает любой язык. Pascal вершина Pascal-подобных языков.
А вот ключевое слово endcase, для case жизнь бы упростило сильно.

Вот с этим совершенно не согласен:
procedure SomeProcedure;
type
  TMyType = Integer;
const
  ArraySize = 100;
var
  MyArray: array [1..ArraySize] of TMyType;
begin
  ...
end;

Где гарантия, что мне не нужен тип на базе ArraySize?


09-11-2003 06:22
А мне нравится такой вариант :


  if a > b  then begin
    c := a;
  end else begin
    c := b;
  end;



В этом случае сточка end else begin воспринимается как единое целое. Как разделить условия на две части. Первая часть - если условие выполняется, вторая если нет.
Какой смысл переносить бегин на отдельную стрчоку я не понимаю.


14-09-2003 14:54
В основном правильно. Но до полной правильности необходимо придерживаться следующих правил:

1. Имена локальных переменных и параметров должны начинаться с неопределенного артикля a(an).
Это позволит избежать кучи ошибок, связанных с совпадением имен локальных переменных и членов класса. Так было в TP, и непонятно, почему Борланды отошли от этого правила в Delphi.
Пример:
procedure TMyClass.Proc1(aP1: Integer);

2. Если тело операторов if, while является составным оператором, слово begin следует писать на той же строке, что и if, while.
Пример:
if a < b then begin
  ...
end
else begin
  ...
end;
Такой код ближе к языку Modula2, который, с точки зрения структурирования, предпочтительнее паскаля.

3. В случае, когда условное выражение операторов if,while слишком длинное, следует форматировать его следующим образом:
if ... длинное условие ...
  ... продолжение длинного условия ...
then
  ...;
То есть then пишется на том же уровне, что и if.

4. Не допускается использование пробелов для отступов. Только TAB.
Кто-то любит большие отступы, кто-то короткие.
Единственный способ примирить всех - это использовать TAB.

5. Что касается вопросов отбивки знаков препинания пробелами,
то вместо того, чтобы приводить кучу примеров, можно было
просто обозначить несколько простых правил:
5.1. Перед скобками "(", "[" пробел ставится всегда, после - никогда.
5.2. Перед скобками ")", "]" пробел не ставится никогда, после - всегда.
5.3. Перед и после "." пробелы не ставятся.
5.4. Все операторы "=", ":=", "+", "-", "or" и т.п. отбиваются пробелами и слева и справа.
5.5. Все остальные знаки препинания (":", ";", ...) оформляются следующим образом:
Перед ними пробела нет, после них - пробел ставится.

---
В остальном - все правильно.

---
С уважением,
Михаил Власов,
http://mv.rb.ru



10-06-2003 15:02
В принципе я согласен с Чарльзом Калвертом. Вот только уж слишком категорично "...это нельзя... ...это ни в коем случае нельзя...".
Я например очень люблю именовать переменные цикла символами в нижнем регистре, например:

SomeArray[i]

смотрится куда как приятнее чем

SomeArray[I]

к тому же в последнем случае приходится тянуться к клавише Shift, а это иногда просто достает!
Считаю вполне допустимыми небольшие отступления, направленные на компактификацию кода, что-то вроде:

if ... then begin
end else begin
end;

while ... do begin
end;

и еще несколько незначительных отличий,
касающихся именования констант.

А в общем и целом нахожу рекомендации,  приведенные в статье, полезными и нужными.
Сообщение не подписано


06-06-2003 18:01
На мой взгляд, все таки, при построении структур типа if, for, while и т.п. более наглядно если begin разполагается на одной строке со структурным выражением, т.е.:
  if (условие) then begin
     ...
     ...
     while (условие) do begin
        ...
        ...
     end
     if () then begin
        ...
        ...
     end
     else if () then begin
        ...
        ...
     end
     else begin
        ...
        ...
     end;
  end;


06-06-2003 15:52
мне не нравятся такие if...then. пользуюсь более читабельной (по-моему) консткрукцией. где-то такой.


if (условие)
   or
   (условие)
   or
   (условие)
then
  begin
    
  end
else
  begin
    
  end;


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



06-06-2003 14:20
Хорошо стилизованый код ... очень помогает. Я долго маялся пока не нашел эксперт для Делфи, который за меня форматирует :о)
Правильно говорять: Програмисты народ ленивый :о)


06-06-2003 14:20
придерживаться стандартов полезно и нужно. Затраты времени на придержание оформления около стандарта, несравнимо меньше чем экономия времени при последующем чтении кода.

Вопрос конечно остается относительно конкретного стандарта, что
есть стандарт. Но то что описано в данной статье, я принимаю
довольно легко потому как сам долго шел к такому стилю. В любом случае, я не думаю что, то что там описано не имеет под собой
исследований в области психологического восприятия и технических приемов и особенностей кодирования.

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

Я например очень часто натравливаю JediCodeFormat на исходные коды некоторых писателей, в которых без 100 грамм не разберешся... И сразу все станивится на свои места...

Я посмотрел бы как бы свободный программист "Viktor" читал бы MSDN или любой технический справочник если бы в нем была написана каша понятная только писателю MSDN.

Порядок во внутреннем коде программы, это как порядок на рабочем столе, порядок в голове и т д. Для меня внутренний порядок стоит на первом месте, за которым идет внешний. И без разницы это телевизор
скрытая в стенах проводка, канализация, вентиляция и т д. Внутренняя инженерия также важна, как и внешняя.

2 Victor - утилита для форматирования кода в дельфи это JediCodeFormat поставляется в исходных кодах.


06-06-2003 13:27
Похоже что автор ввел эти правила для конкретной группы разработчиков, но потом зачем то решил выложить в сеть. Маловато к тому же. Например если уж он собирается с ходу понимать чужой код, то он должен был подробно расписать как обзывать комоненты, да и процедуры. Вообще методы именования. А то кто в лес кто по дрова и сиди разбирайся. Да вообще материал слабоват, очевидные вещи расписываются как открытие в программировании.


06-06-2003 12:37
>>>>>>При разработке ПО написании кода внимание направлено на решение задачи а не на художественное оформление.
>>>Только в том случае, если Ваш код никто кроме Вас никогда читать не будет

Dobavlu - i v sluchae esli Vi sami chitat etot kod ne sobiraetes.
Vot mne seychas prixoditsa razbiratsa s chujim kodom - kak vam nazvaniya funkciy vrode AL1 ili RRL
 JINX


06-06-2003 11:45
Кстати Пачеко и Тейксейра в своем талмуде описывают вариант, о котором говорил Magic.


06-06-2003 11:18
>>>При разработке ПО написании кода внимание направлено на решение задачи а не на художественное оформление.
Только в том случае, если Ваш код никто кроме Вас никогда читать не будет.


06-06-2003 11:17
>При разработке ПО написании кода внимание направлено на решение задачи а не на художественное оформление.
Одно другому не мешает. Уметь разводить костёр руками и пользоваться спичками - это разные вещи.


06-06-2003 10:05
Программисты существа ленивые иначе они не были бы программистами.

Никто не заставит программиста придерживатся стандартов !!!!
МЫ СВОБОДНЫЕ ЛЮДИ !!!! ПРОГРАММИСТЫ !!!!!


При разработке ПО написании кода внимание направлено на решение задачи а не на художественное оформление.

Для предания исходному коду читабельного вида нужно применять соответствующее ПО пусть чорную работу выполняет компьютер (возможно вы помните прекраный документатор кода из пакета СУБД FOXPRO, FOXDOC). Мне так и не удалось разыскать что-то подобное для DELPHI.

 unlx


06-06-2003 07:48
В дополнение.
Стандарты принятые разработчиками Indy:

http://www.indyproject.org/Teams/Core/Standards/index.html

Они отличаются в паре мелких мест + дополнены и "устрожены"

Например,
if x then
begin
end
else
begin
end
ИЛИ
if x then
else

Надо писать как:
if x then begin
end
else begin
end

=>
1) компактно
2) нельзя допустить ошибку написав 2 оператора в if then без begin

PS: вообще жаль что Borland не перенял у оберона такую полезную штуку, как полный отказ от begin - сделали бы любой оператор комбинированым:
while x do
  a;
  b;
end;

PPS:
Кода Виктор
С/C++ регистрозависимый язык, отсюда невозможность практического применения данного стандарта, слишком лекго ошибиться. вот и ввели они пару простых правил: THIS_IS_CONST, del_me_please

кроме того после изучения и настройки code complete, код пишется нажатиями 3-4 клавиш

b^J =>
begin
end


05-06-2003 22:52
Вообще страшно спорный вопрос. Стандарт нужен, но только в основном только в своей конторе. Я, например, именую все модули только с маленькой буквы:

e_octc.pas

А функции мне больше нравится писать так:

function G_TraceRay( const poly: array of vec3_t; const s, e: vec3_t ): boolean;

Насчёт if-then тоже смотря как. Бывает, так заморачиваешься делать эти отступы - код становится некомпактным, рыхлым. Иногда можно написать и так:

if void( param ) then exit;
param^ := Tex_GetID( id );

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

Или вот begin-end - всё-таки {} в С компактнее - многие древние языки программирования страдали тем, что там повсеместно использовались длинные операторы в виде осмысленных слов. В OP эти рудименты остались в виде begin-end, not, and, label.

Пишу так:

if ... then
begin
  ...
  ...
end else
begin
  ...
  ...
end;

А на С компактнее:

if ()
{
  ...
  ...
} else
{
  ...
  ...
}

Насчёт имён идентификаторов - тут тоже о-о-очень спорный вопрос. Многие суперпрофессиональные программисты не используют MyVariable, а используют myvariable или ещё что-то такое. Например, можно посмотреть исходный код игр Quake I-II - там от Кармака всё в таком духе, какое там MyVariable! Сначала я этот стиль не принял, но теперь вижу, что если не перебарщивать с numuserclipplanes а писать numuser_clipplanes, то всё после небольшой практики вполне читабельно, а код не пестрит вершинами заглавных букв. Да возьмите хотя-бы обычный текст, хоть из этого моего сообщения - разве Пишу Я Вот Таким Стилем, Может Быть Всё-Таки писать вот таким, привычным?

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



05-06-2003 19:01
Точно :))


05-06-2003 18:27
А в VCL кое где не так форматировано :-)))


Добавьте свое cообщение

Вашe имя:  [Войти]
Ваш адрес (e-mail):На Королевстве все адреса защищаются от спам-роботов
контрольный вопрос:
Жил-был у бабушки серенький КТО?
в качестве ответа на вопрос или загадку следует давать только одно слово в именительном падеже и именно в такой форме, как оно используется в оригинале.
Надоело отвечать на странные вопросы? Зарегистрируйтесь на сайте.

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


Оценка стиля изложения
 
Все понятно, материал читается легко
 
Есть неясности в изложении
 
Непонятно написано, трудно читается

Текст:
Жирный шрифт  Наклонный шрифт  Подчеркнутый шрифт  Выравнивание по центру  Список  Заголовок  Разделительная линия  Код  Маленький шрифт  Крупный шрифт  Цитирование блока текста  Строчное цитирование
  • вопрос Круглого стола № XXX

  • вопрос № YYY в тесте № XXX Рыцарской Квинтаны

  • сообщение № YYY в теме № XXX Базарной площади
  • обсуждение темы № YYY Базарной площади
  •  
     Правила оформления сообщений на Королевстве
      
    Время на сайте: GMT минус 5 часов

    Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
    Функция может не работать в некоторых версиях броузеров.

    Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
    Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

     
    © При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

    Яндекс цитирования