MemberJunction / MemberJunction/MJ
Refactor: Protected methods use PascalCase instead of camelCase
- Dominant language
- TSQL
- Stars
- 29
- Forks
- 6
- Avg merge
- 2d 1h
- Merged PRs (30d)
- 323
Description
## Summary
The CLAUDE.md coding convention specifies **camelCase for protected/private class members**, but **175 protected methods across 17 packages** use PascalCase instead. This is a legacy pattern from the original codebase conventions.
## Scope
| Package | Violations |
|---------|-----------|
| MJCore | 49 |
| Angular | 29 |
| AI | 21 |
| GenericDatabaseProvider | 19 |
| Actions | 14 |
| Other (12 packages) | 43 |
### High-violation files
- `databaseProviderBase.ts` (MJCore): ~20
- `baseEntity.ts` (MJCore): ~11
- `baseEngine.ts` (MJCore): ~9
- `providerBase.ts` (MJCore): ~9
- `GenericDatabaseProvider.ts`: ~19
### Examples
```typescript
// Current (PascalCase — violates convention)
protected PropagateTransactionToParents(): void
protected BuildAggregateSQL(...): string
protected ScrollMessagesToBottom(...): void
protected RaiseEvent(...): void
protected GetActionParamsForAction(...): ActionParam[]
// Expected (camelCase)
protected propagateTransactionToParents(): void
protected buildAggregateSQL(...): string
protected scrollMessagesToBottom(...): void
protected raiseEvent(...): void
protected getActionParamsForAction(...): ActionParam[]
```
## Considerations
- Many of these are in core base classes (`BaseEntity`, `BaseEngine`, `ProviderBase`), so renames cascade into all subclasses and call sites.
- Recommend incremental migration, package-by-package, starting with leaf packages that have fewer downstream consumers.
- Could be enforced going forward with an ESLint rule for new code.
Contributor guide
Assessment
This issue has not been assessed yet.