Code Documentation Standards
Also Known As
PHPDoc standards
code comments
documentation
TL;DR
When, what, and how to document — the right balance between self-documenting code and explicit documentation for APIs, non-obvious decisions, and complex algorithms.
Explanation
Documentation has levels: code (names, structure), inline comments (why, not what), docblocks (API contracts, @throws, complex types), README (project overview, setup, architecture), ADRs (architectural decisions), and external docs (user-facing). Anti-pattern: comments that restate the code ('increment i by 1 // i++'). Valuable comments: explain why a non-obvious approach was chosen, document known limitations, reference the issue that required a workaround, and explain complex algorithm steps.
Common Misconception
✗ More comments means better documentation — a comment that restates the code adds noise; well-named functions and variables eliminate the need for most comments.
Why It Matters
The most valuable documentation answers 'why' — a comment explaining why a security check exists prevents future developers from removing it as 'unnecessary'.
Common Mistakes
- Comments that describe what the code does rather than why.
- Outdated comments that describe old behaviour after refactoring — wrong documentation is worse than none.
- No README — the most common documentation gap in PHP projects.
- Architecture decisions undocumented — 'why did we choose this approach?' answered by 'no idea, it was here when I joined'.
Code Examples
✗ Vulnerable
// Comments that add zero value:
$i++; // Increment i
$users = []; // Initialize array
// Check if user is admin:
if ($user->role === 'admin') {
// They are admin
}
✓ Fixed
// Comments that explain why:
// Rate limit to 5 req/min per IP — prevents credential stuffing.
// See: https://security.example.com/incidents/2025-001
if ($rateLimiter->isExceeded($ip)) {
throw new RateLimitException();
}
// Use bcrypt cost 14 not 12 — server benchmark showed negligible
// difference at 14 but makes offline dictionary attacks 4x slower.
$hash = password_hash($password, PASSWORD_BCRYPT, ['cost' => 14]);
References
Tags
🤝 Adopt this term
£79/year · your link shown here
Added
16 Mar 2026
Edited
22 Mar 2026
Views
25
🤖 AI Guestbook educational data only
|
|
Last 30 days
Agents 0
No pings yet today
No pings yesterday
Perplexity 7
Amazonbot 7
Ahrefs 3
Google 3
Unknown AI 3
Also referenced
How they use it
crawler 20
crawler_json 2
pre-tracking 1
Related categories
⚡
DEV INTEL
Tools & Severity
🟢 Low
⚙ Fix effort: Low
⚡ Quick Fix
Write docblocks for public API methods with @param, @return, @throws — skip obvious private methods; use PHPStan generic annotations @template @psalm-type for complex types
📦 Applies To
PHP 5.0+
web
cli
queue-worker
🔗 Prerequisites
🔍 Detection Hints
Public methods with no docblock on complex parameters; @param mixed @return mixed hiding types; outdated docblock contradicting actual code
Auto-detectable:
✓ Yes
phpcs
phpstan
psalm
phpdoc
⚠ Related Problems
🤖 AI Agent
Confidence: Low
False Positives: High
✗ Manual fix
Fix: Low
Context: File