Use consistent terminology across similar concepts and choose names that clearly indicate their purpose. Avoid overloaded terms that cause confusion in your domain context, and ensure naming conventions align with established patterns.

Key principles:

Example of good naming consistency:

// Good - consistent naming across adapters
export class DriverAdapterError extends Error {
  name = 'DriverAdapterError'
}

// Bad - inconsistent terminology
export class PrismaAdapterError extends Error {
  name = 'PrismaAdapterError'  
}

Example of avoiding overloaded terms:

// Good - avoids confusion with domain Schema
import { Schema as Shape } from 'effect'

// Potentially confusing in Prisma context
import { Schema } from 'effect'