bcquality/custom/knowledge/patterns/cmfrt-labels-local-scope.md
BeytullahCengiz88 afb1fa2883 Add CMFRT naming conventions, object ID ranges, and patterns documentation
- Introduced guidelines for using the "CMFRT" prefix in object names, fields, and procedures to avoid naming collisions and ensure clarity.
- Established rules for object ID ranges to prevent conflicts with other extensions and maintain historical integrity.
- Documented best practices and anti-patterns for various coding patterns, including case statements, interface injection, label usage, and validation methods.
- Implemented a standards review skill to evaluate AL source changes against CMFRT company standards, ensuring compliance with naming, permissions, and architectural patterns.
2026-07-14 14:09:04 +02:00

1.4 KiB

bc-version domain keywords technologies countries application-area
all
patterns
label
local-scope
global-var
comment-attribute
placeholder
translation
strsubstno
al
w1
all

CMFRT Labels are local with documented placeholders

Description

Label variables in CMFRT code are declared in the var section of the one procedure that uses them, not in the codeunit's global var section. Every label whose text contains %1-style placeholders carries a Comment attribute documenting each placeholder (Comment = '%1 = Job No.'). Global label sections accumulate text that no procedure references anymore, and undocumented placeholders leave translators guessing what will be substituted.

Best Practice

Declare each label local to the procedure (usually the Do<Name> procedure) that passes it to Error, Message, Confirm Management, or StrSubstNo. Add Comment naming every placeholder. When review moves logic into a Do procedure, move its labels with it.

See sample: cmfrt-labels-local-scope.good.al.

Anti Pattern

Labels declared in the codeunit-level var section, or placeholder labels without a Comment attribute. Global labels outlive their callers as dead text, are shared between unrelated procedures, and their missing placeholder documentation produces mistranslations that only surface in localized builds.

See sample: cmfrt-labels-local-scope.bad.al.