Coding rules: cast chains mean the types are wrong
This commit is contained in:
parent
3c70a78838
commit
ab1dd40322
1 changed files with 16 additions and 0 deletions
|
|
@ -83,6 +83,22 @@ static void BuildFullKeyName(const char* keyname, char* buffer) {
|
||||||
- Do not add WoW `// VERIFY:` hashes or use `re/tools/verify.py`; neither is this project's verification workflow.
|
- Do not add WoW `// VERIFY:` hashes or use `re/tools/verify.py`; neither is this project's verification workflow.
|
||||||
- Claims, submission scope and peer-review procedure follow `AGENTS.md` and current server guidance.
|
- Claims, submission scope and peer-review procedure follow `AGENTS.md` and current server guidance.
|
||||||
|
|
||||||
|
## 2b. Cast chains mean the types are wrong
|
||||||
|
|
||||||
|
A chain of casts (`static_cast<int>(static_cast<std::uint32_t>(...))`, `std::bit_cast` round trips) usually
|
||||||
|
reproduces the compiler's output instead of the original source. Fix the declared types of the field,
|
||||||
|
parameter or return value so the code reads naturally.
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
// Wrong: hides that the value is stored as a 32-bit int
|
||||||
|
return static_cast<int>(static_cast<std::uint32_t>(this->render.instant.Get(key)));
|
||||||
|
|
||||||
|
// Right: the getter returns the original type
|
||||||
|
return this->render.instant.Get(key);
|
||||||
|
```
|
||||||
|
|
||||||
|
Keep a cast only where the original source evidently had one (an explicit narrowing or a sign change).
|
||||||
|
|
||||||
## 3. Every field carries its offset
|
## 3. Every field carries its offset
|
||||||
|
|
||||||
Every recovered instance data member of a struct, class or union is prefixed with its evidenced x86 offset:
|
Every recovered instance data member of a struct, class or union is prefixed with its evidenced x86 offset:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue