[Clean Code] 1. Class and object names: Noun - Do: User, Order, Invoice, GameSession, Match, QuestionBank - Avoid: ManageUser, HandleOrder (these sound like actions → make them services) - Good service nouns: UserService, OrderRepository, Matchmaker (role/agent nouns) 2. Function names: Verb phrase names - Do: calculateTotal(), findUserById(), startMatch(), verifyToken(), emitEvent() - Avoid: totalCalculator(), userById() (missing action) 3. Problem Domain: Simpler terms, avoid technical words - Goal: Speak the business language; reduce jargon. - Entity names: Player, Match, Question, Answer, SimilarityScore - Use cases (application services): startMatch, submitAnswer, calculateSimilarity - Fields: nickname, text, tags, value ("yes" | "no"), startedAt - Avoid in problem domain: terms like DTO, DAO, Factory, Strategy, Adapter, Index, Payload, Serialize. 4. Solution Domain: Computer science terms, algorithm name, design pattern name - Goal: Be explicit about how we solve it. - Repos/ports: PlayerRepository, IMatchRepository - Algorithms/services: JaccardScoringService, LevenshteinMatcher - Patterns/components: MatchmakerFacade, AnswerMapper, JwtAuthGuard, OutboxPublisher - Infra: PrismaPlayerRepository, S3AssetStorage, RedisCache