Open
Description
Prerequisites
- This rule has not already been suggested.
- This should be a new rule, not an improvement to an existing rule.
- This rule would be generally useful, not specific to my code or setup.
Suggested rule title
Class method should not be invoked from an object instance
Rule description
Calling a class method from an object instance would mislead reader that the method is an object method and may affect the object itself. Call class method using class name as prefix.
Rationale
// class declaration and implemeantion
type
TFoo = class(TObject)
public
class procedure Bar;
end;
implementation
class procedure TFoo.Bar;
begin
// do something
end;
// calling
var
FooObj: TFoo;
begin
FooObj := TFoo.Create;
FooObj.Bar; // non-compliant
TFoo.Bar; // compliant
end.