32 lines
932 B
Markdown
32 lines
932 B
Markdown
+++
|
|
title = "WITH Scope Name Collision"
|
|
weight = 1450
|
|
tags = ["C/AL"]
|
|
categories = ["Best Practice"]
|
|
+++
|
|
Do not use the WITH scope when it has a variable whose name is the same as a local variable. This can lead to wrong code assumptions.
|
|
|
|
**Given that**
|
|
"Contract Type" is a field on table ServiceContractHeader, then in the following example there is a parameter name clash with the field name. Which one will be used?
|
|
|
|
Bad code
|
|
|
|
PROCEDURE InsertData@1("Contract Type"@1000 : Option...);
|
|
...
|
|
BEGIN
|
|
...
|
|
WITH ServiceContractHeader DO BEGIN
|
|
...
|
|
DimMgt.InsertServContractDim(...,"Contract Type","Contract No.",0,...);
|
|
END;
|
|
|
|
Good code
|
|
|
|
PROCEDURE InsertData@1(ContractType@1000 : Option...);
|
|
...
|
|
BEGIN
|
|
...
|
|
WITH ServiceContractHeader DO BEGIN
|
|
...
|
|
DimMgt.InsertServContractDim(...,ContractType,"Contract No.",0,...);
|
|
END;
|