بنقرة واحدة
delphi-clean-code
Pragmatic clean code standards for Delphi — concise, direct, no over-engineering
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Pragmatic clean code standards for Delphi — concise, direct, no over-engineering
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
| name | Delphi Clean Code |
| description | Pragmatic clean code standards for Delphi — concise, direct, no over-engineering |
CRITICAL SKILL — Be concise, direct and solution-focused.
| Principle | Rule |
|---|---|
| SRP | A function/class does ONE thing |
| DRY | Don't repeat code — extract and reuse |
| KISS | Simplest solution that works |
| YAGNI | Don't build what wasn't asked for |
| Boy Scout | Leave the code better than you found it |
| Element | Convention |
|---|---|
| Variables | Reveal intent: LCustomerCount not N |
| Methods | Verb + noun: GetCustomerById not Customer |
| Booleans | Question form: IsActive, HasPermission, CanEdit |
| Constants | SCREAMING_SNAKE: MAX_RETRY_COUNT |
| Fields | Prefix F: FCustomerName |
| Parameters | Prefix A: ACustomerName |
| Var. locations | Prefix L: LCustomer |
Rule: If you need a comment to explain a name, rename it.
| Rule | Description |
|---|---|
| Short | Maximum 20 lines, ideal 5-10 |
| One Thing | Do one thing and do it well |
| One Level | One level of abstraction per method |
| Few Args | Maximum 3 arguments, prefer 0-2 |
| No Side Effects | Don't mute inputs unexpectedly |
| Standard | Application |
|---|---|
| Guard Clauses | Early returns for edge cases |
| Flat > Nested | Avoid deep nesting (max 2 levels) |
| Composition | Small compound methods |
| Colocation | Related code together |
//❌ BAD — excessive nesting
procedure ProcessOrder(AOrder: TOrder);
begin
if Assigned(AOrder) then
begin
if AOrder.Items.Count > 0 then
begin
if AOrder.IsValid then
begin
//real logic here
end;
end;
end;
end;
//✅ BOM — guard clauses
procedure ProcessOrder(AOrder: TOrder);
begin
if not Assigned(AOrder) then
raise EArgumentNilException.Create('AOrder cannot be nil');
if AOrder.Items.Count = 0 then
raise EBusinessRuleException.Create('Order must have items');
if not AOrder.IsValid then
raise EValidationException.Create('Order validation failed');
//real logic here — no nesting
end;
| ❌ Pattern | ✅ Fix |
|---|---|
| Comment each line | Delete obvious comments |
| Method > 20 lines | Share by responsibility |
| Magic numbers | Named constants |
with statement | Explicit local variables |
| Global variables | Constructor injection |
| Generic Catch | Specific exceptions |
Logic in OnClick | Delegate to Service |
| God class / God unity | One class = one responsibility |
Ignore Free | try/finally always |
//✅ Temporary objects — always try/finally
LList := TStringList.Create;
try
LList.Add('item');
//use LList
finally
LList.Free;
end;
//✅ Interfaces — reference counting automático
var LService: IMyService;
LService := TMyService.Create; //automatically released
//✅ Owner pattern for visual components
LButton := TButton.Create(Self); //Self frees automatically
| Situation | Action |
|---|---|
| User requests feature | Write directly |
| User reports bug | Correct, don't explain |
| Requirement unclear | Ask, don't assume |
| Question | Why |
|---|---|
| Which units use this? | They can break |
| What does this unit matter? | Interfaces can change |
| What tests cover this? | Tests may fail |
| Is it a shared component? | Multiple points affected |
🔴 Rule: Edit the file + all dependents in the SAME task.
| Check | Pergunta |
|---|---|
| ✅ Goal achieved? | Did I do exactly what was asked? |
| ✅ Edited files? | Have I modified everything necessary? |
| ✅ Does the code work? | Have I tested/verified? |
| ✅ No errors? | Compiles without warnings? |
| ✅ Nothing forgotten? | Edge cases treated? |
| ✅ Memory safe? | Objects released correctly? |
🔴 Rule: If ANY check fails, correct it before finishing.
Delphi code review checklist — quality, security, performance, SOLID, memory
Good memory management practices, memory leak prevention and exception handling in Delphi
SOLID implementation patterns for Delphi projects — Repository, Service, Factory, Strategy with constructor injection and interfaces
Implementation of the 23 GoF (Gang of Four) patterns in Object Pascal / Delphi with interfaces, TInterfacedObject and SOLID principles. Covers Creational, Structural and Behavioral patterns.
Standards for using DevExpress (DEXT) components in Delphi VCL applications
Architectural patterns, Entity ORM, Minimal APIs and dependency injection for projects created with Dext Framework (cesarliws/dext).