Why does EK9 reject repeated parameter groups across functions?
← Code Quality · Ref: Q855
When 3+ functions share 4+ parameters with matching names and types, EK9 detects a data clump (E11053). Extract the parameters into a record.
See Q97 for class vs record. See Q311 for quality checks.
Example
defines module qa.quality.data.clump.record defines record Address street <- String() city <- String() state <- String() zipCode <- String() Address() -> s as String c as String st as String z as String street :=: s city :=: c state :=: st zipCode :=: z operator <=> as pure -> arg0 as Address <- rtn as Integer: street <=> arg0.street default operator defines function formatAddress() as pure -> addr as Address <- rtn as String: `${addr.street}, ${addr.city}` validateAddress() as pure -> addr as Address <- rtn as Boolean: addr.street? and addr.city? normalizeAddress() -> addr as Address <- rtn as Address: Address(s: addr.street, c: addr.city, st: addr.state.upperCase(), z: addr.zipCode) defines program DataClumpDemo() stdout <- Stdout() addr <- Address(s: "123 Main", c: "Springfield", st: "IL", z: "62704") if validateAddress(addr) stdout.println(formatAddress(addr))
Other ways to ask this
- What triggers E11053 DATA_CLUMP_DETECTED?
- Why should I extract repeated parameters into a record?
- What is a data clump in EK9?
Coming from another language?
Java: no detection, relies on SonarQube. Python: no type-aware detection. Go: favors structs but not enforced. EK9: compile-time error requiring record extraction.
Keywords: parameter, E11053, extract, record, clump, quality, data