Стандарти за писане на изходен код в Delphi

Сайт на Delphi: ежедневни Delphi-новини, документация, статии, преглед, интервю, компютърен хумор.

7. ОПЕРАТОРИ

Изявленията са един или повече редове код, разделени с точка и запетая. Простите изрази имат една точка и запетая, докато сложните изрази могат да имат повече от една точка и запетая и по този начин се състоят от много прости изрази.

За да опростите процеса на проследяване и отстраняване на грешки в кода, трябва да следвате правилото: "един оператор - един ред".

Това е просто изявление:A := B;

Това е съставен или структуриран израз:begin B := C; A := B; край;

7.1. ПРОСТИ ОПЕРАТОРИ

Простите изрази съдържат една точка и запетая. Ако трябва да разделите изявления, преместете продължението на изявлението на следващия ред, с отстъп от два интервала:

MyValue := MyValue + (SomeVeryLongStatement / OtherLongStatement);

7.2. КОМПОЗИТНИ ОПЕРАТОРИ

Съставните изрази винаги завършват с точка и запетая.

begin MyStatement; Моето следващо изявление; Моето последно изявление; край;

7.3. ЗАДАЧИ И ИЗРАЗИ

Всяко присвояване и всеки израз трябва да са на различен ред.

Правилноa := b + c; Inc (брой);

Грешноa := b + c; Inc (брой);

7.4. ДЕКЛАРАЦИЯ НА ЛОКАЛНИ ПРОМЕНЛИВИ

Локалните променливи трябва да бъдат стилизирани Camel Caps. За локални променливи префиксът F не е необходим.

var MyData: Integer; Моят низ: низ;

var x, y, z: цяло число;

В този случай променливите, които са различни по значение, трябва да бъдат поставени на отделен ред, дори ако имат един и същи тип:

var x, y :integer; ляво:цяло число;

7.5. ДЕКЛАРАЦИЯ НА МАСИВИ

тип TMyArray = масив [0..100] от Char;

7.6. АКО ОПЕРАТОР

Най-вероятната опция if/then/else трябва да бъде поставена в клаузата then, а най-малко вероятните опции трябва да бъдат поставени в клаузата else.

Операторът if винаги трябва да обхваща поне два реда.

Грешноако A 0 тогава Направи нещо;

Грешноако (I>0) тогава Направи нещо;

7.7. ЗА ОПЕРАТОР

Грешноза i := 0 до 10 do begin DoSomething; Направи нещо друго; край;

Правилноза i := 0 до 10 do begin DoSomething; Направи нещо друго; край; for I := 0 to 10 do DoSomething;

7.8. WHILE ОПЕРАТОР

Грешнодокато x 25;

7.10. КЕЙС ОПЕРАТОР

Индивидуалните случаи в изложението на случай трябва да бъдат подредени по цифри или по азбучен ред. Ако е важно да се разбере логиката на приложението, е позволено да се подредят отделни варианти на изявлението на случая в логичен ред според функционалното разположение на изявленията в текста на кода.

Клаузата else на case конструкция трябва да се използва само за "всичко останало" (по подразбиране, откриване на грешки и т.н.). Ако else се използва за замяна на опция за изпълнение, която може да бъде преобразувана в нормален избор, тогава това е неправилно и конструкцията трябва да бъде променена, за да замени използването на else с нормален избор в случай.

Въпреки че има много синтактично правилни конструкции, следното се счита за препоръчително:

Правиленcase ScrollCode на SB_LINEUP, SB_LINEDOWN: begin Incr := FIncrement div FLineDiv; FinalIncr :=FIncrement mod FLineDiv; Брой := FLineDiv; край; SB_PAGEUP, SB_PAGEDOWN: начало Incr := FPageIncrement; FinalIncr := Incr mod FPageDiv; Incr := Incr div FPageDiv; Брой := FPageDiv; край; друго Брой := 0; Incr := 0; FinalIncr := 0; край;

7.11. ОПЕРАТОР ОПИТАЙ

Инструкцията try в блока try..finally..end трябва да се използва при всяко разпределение на ресурси, за да се гарантира, че те са освободени.

ПравилноОбект := TObject.Create; опитайте Object.DoWork; накрая Object.Free; край;

Ако ресурсите се разпределят няколко пъти подред, тогава трябва да се използват няколко вложени подобни конструкции. Не се препоръчва комбинирането на множество операции за разпределяне и освобождаване на ресурси в една конструкция, тъй като това не гарантира, че разпределените ресурси ще бъдат освободени, ако възникне изключение преди въвеждане на блок try..finally или вътре в блок finally..end.

ПравилноObject1 := TObject1.Create; опитайте Object2 := TObject2.Create; опитайте Object1.DoWork; Object2.DoWork; накрая Object2.Free; край; накрая Object1.Free; край;

НеправилноObject1 := TObject1.Create; Object2 := TObject2.Create; опитайте Object1.DoWork; Object2.DoWork; накрая Object1.Free; Обект2.Безплатен; край;

Пример за използване на израза try:

Правилноопитайте опитайте EnumThreadWindows(CurrentThreadID, @Disable, 0); Резултат := TaskWindowList; с изключение на EnableTaskWindows(TaskWindowList); повдигане; край; накрая TaskWindowList := SaveWindowList; TaskActiveWindow := SaveActiveWindow; край;