MemberJunction / MemberJunction/MJ

Refactor: Protected methods use PascalCase instead of camelCase

Open
#2,063 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.