Skip to content

Commit a3b4be0

Browse files
authored
refactor(emulator): eliminate DRY violation in handleWriteMultipleRegisters (#322)
Eliminates DRY (Don't Repeat Yourself) violation in the handleWriteMultipleRegisters function by consolidating duplicated loop logic. Changes: - Consolidate two separate loops into a single loop that always collects values - Move conditional logging after value collection - Maintains 100% test coverage - No functional changes to behavior Technical Details: - Before: Two separate loops - one collecting values for logging, one without - After: Single loop always collects values, conditional logging after - Performance impact is negligible (array creation < 1μs), prioritizing code maintainability Test Results: - All 331 emulator unit tests pass - 100% coverage maintained on function-codes.ts
1 parent b928c88 commit a3b4be0

1 file changed

Lines changed: 8 additions & 11 deletions

File tree

packages/emulator/src/behaviors/function-codes.ts

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -170,19 +170,16 @@ function handleWriteMultipleRegisters(
170170
}
171171

172172
// Write registers
173+
const values: number[] = []
174+
for (let i = 0; i < quantity; i++) {
175+
const value = request.readUInt16BE(7 + i * 2)
176+
device.setHoldingRegister(startAddress + i, value)
177+
values.push(value)
178+
}
179+
180+
// Log write operation if verbose logging enabled
173181
if (verboseLogger) {
174-
const values: number[] = []
175-
for (let i = 0; i < quantity; i++) {
176-
const value = request.readUInt16BE(7 + i * 2)
177-
device.setHoldingRegister(startAddress + i, value)
178-
values.push(value)
179-
}
180182
verboseLogger.logWrite(slaveId, 0x10, startAddress, quantity, values)
181-
} else {
182-
for (let i = 0; i < quantity; i++) {
183-
const value = request.readUInt16BE(7 + i * 2)
184-
device.setHoldingRegister(startAddress + i, value)
185-
}
186183
}
187184

188185
// Response: slave_id + function_code + start_address + quantity

0 commit comments

Comments
 (0)