Стандарти за писане на изходен код в 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; край;