Guia para Nomeação de Classes, Métodos e Funções


Regras globais:

  • Classes → PascalCase
  • Métodos e funções → camelCase
  • Variáveis Globais → MAIUSCULO_SLUG_CASE
  • Siglas devem ser escritas em maiúsculo, respeitando o padrão de classes, métodos e constantes
  • Use nomes descritivos e claros. Não use abreviações e termos genéricos.

Busque sempre escrever de uma forma clara, diferenciando o que são Entidades, Value Objects, DTOs, Mappers e Adapters.

1. Entidades

Nomes singulares, claros e significativos.

Exemplos corretos:

class User {}
class Product {}
class Order {}

Exemplos incorretos:

class Usr {}
class Obj {}
class DataModel {}

2. Objetos de Valor (Value Objects)

Nomes devem refletir claramente o conceito que encapsulam.

Exemplos corretos:

class Email {}
class Address {}
class Money {}

Exemplos incorretos:

class EmailValue {}
class DataObj {}

3. DTOs (Data Transfer Objects)

Nomes devem indicar:

  1. Entidade
  2. Contexto (operação)
  3. Direção (entrada/saída)

Exemplos corretos:

class CreateUserDTO {}
class UserResponseDTO {}
class UpdateProductDTO {}

Exemplos incorretos:

class UserData {}
class ProductObj {}

4. Mappers

Nome da classe → Nome da Entidade + Mapper.

Exemplos corretos:

class UserMapper {
  static toDTO(user: User): UserResponseDTO { ... }
  static toEntity(dto: CreateUserDTO): User { ... }
}

Exemplos incorretos:

class DataConverter {}
class Helper {}
class Utils {}

5. Adapters

Nome da classe → Nome do serviço ou tecnologia + Adapter.

  • Geralmente implementam um Port (contrato do domínio).

Exemplos corretos:

// Port (contrato)
interface EmailProvider {
  sendEmail(to: string, subject: string, body: string): Promise<void>;
}

// Adapter concreto
class ExternalEmailAdapter implements EmailProvider {
  constructor(private externalService: ExternalEmailService) {}
  async sendEmail(to: string, subject: string, body: string) { ... }
}

Exemplos incorretos:

class EmailService {}
class ThirdPartyConnector {}
class ServiceAdapter {}

Resumo das convenções de nomenclatura

TipoNome corretoNome incorreto
EntidadeUser, Product, OrderUsr, Obj, DataModel
Value ObjectEmail, Address, MoneyEmailValue, DataObj
DTOCreateUserDTO, UserResponseDTOUserData, ProductObj
MapperUserMapperDataConverter, Utils
AdapterExternalEmailAdapterEmailService, ServiceAdapter