Delphi Coding Standards and Guidelines
Delphi Coding Standards and Guidelines
Below are some Delphi coding standards and guidelines mentioned which each Delphi developer should take care of. Anybody can code, but neat and clean coding is an art. I have tried to mention some Delphi coding standards and guidelines which I follow everyday. Following list includes use of proper naming convention and indentation, proper exception handling and resource management, usage of proper datatypes etc.
1. Use proper naming convention
Use proper naming conventions and provide meaningful names to classes, records, arrays, enumerated types, pointers and other variables so that code readability is maintained and other developers can easily understand your code.
2. Always maintain a clear indentation
Always leave two character spaces before writing the child statement. Here is the example.
if condition1 then
begin
fist statement
second statement
end;
3. Declare records/class names prefixed with 'T' character, pointer names prefixed with 'P' character and field names of the class should be prefixed with 'F' character. The name of the object of the class should be same as that of the class name except the 'T' character prefixed. Here is the example.
TMyRecord = record
ID : integer;
RecNo : integer
end;
TMyClass = class(TObject)
private
FMyField1: Integer;
FMyField2: Integer;
end;
MyClass = TMyClass;
PMyPointer = ^TMyClass;
4. Always use try/except and try/finally
Always use try/except to handle all kinds of exception which may be raised from your code. Always use try/finally to free up memory which you might have assigned in your code.
5. Avoid the use nested "with" statement
Nested "with" statements are confusing and make the debugging very hard. It decreases the code readablility. Consider the following example.
with myQueryComponent do
begin
.......
.......
.......
with myQueryComponent2 do
begin
......
......
end;
end;
6. Try to avoid "exit" statement
Wherever possible, try to minimize the use of "exit" statement. When dealing with loops, try to end the loop with some condition and avoid the use of exit statement.
7. "case" statements should be neat and clean
When you are using "case" statements, try to keep less code in it. If your code grows in size, it is advisable to make a different procedure or function for it and just call that function/procedure.
8. Try to minimize the use of variants
Variants are commonly used when datatypes are generally unknown but as a responsible developer you must try to avoid its usage. Consider the following example.
with dsMyDataset do
begin
Active := False;
Params.ParamByName('ID').AsVariant := AnyID;
Active := True;
end;
Here, if you know that AnyID variable will be integer in all cases, then you should avoid the use of "AsVariant" like following:
with dsMyDataset do
begin
Active := False;
Params.ParamByName('ID').AsInteger := AnyID;
Active := True;
end;
9. Minimize the use of global variables
Always try to use less global variables in your unit and try to declare them locally where you want to use them.