Receber por email
← Voltar para o catálogo

app

This skill should be used when the user asks to "calculate code mass", "measure code complexity with APP", "compare implementations using APP", "apply Absolute Priority Premise", "use mass calculations", or during TDD refactor phases when comparing alternative implementations. Based on Micah Martin's work.

14estrelas
Atualizado há 2 meses

Ver no GitHub ↗ Licença: Apache-2.0

Como adicionar

/plugin marketplace add t1/tdder

O comando exato pode variar conforme o repositório. Confira o README no GitHub.

Para o autor da skill

Cole no README do seu repo

Mostra que sua skill está catalogada na Skillteca, gera backlink e tráfego rastreável.

[![Skillteca](https://www.skillteca.com.br/api/badge/app/svg)](https://www.skillteca.com.br/skills/app)

Skills relacionadas

Ver todas de Desenvolvimento →

Alerta por categoria

Receba novas skills de Desenvolvimento toda segunda

1 email curto, só com as skills novas de Desenvolvimento. 4 minutos de leitura, sem spam, cancela com 1 clique.

Você confirma o email no primeiro envio. Sem spam. Cancela com 1 clique.

Ler descrição completa

Absolute Priority Premise (APP)

Objective heuristic for comparing code quality by assigning mass values to code components. Lower total mass indicates simpler code.

The Six Components

| Component | Mass | Examples | |-------------|------|-------------------------------------| | Constant | 1 | 5, "hello", true, [] | | Binding | 1 | amount, userName, result | | Invocation | 2 | calculate(), Math.max(a, b) | | Conditional | 4 | if, switch, case, ?: | | Loop | 5 | while, for, forEach, map | | Assignment | 6 | x = 5, count++, list.add() |

Calculation

Total Mass = (constants x 1) + (bindings x 1) + (invocations x 2)
           + (conditionals x 4) + (loops x 5) + (assignments x 6)

Lower mass = Better code (all else being equal).

Special Counting Rules

  • Method declarations count as Constant (1) + Binding (1)
  • Class definitions count as Constant (1) + Binding (1) (usually ignored in comparisons)
  • final fields and local variables are Bindings (1), not Assignments (6)
  • Only re-assignments that modify values count as Assignment (6)

Integration with TDD

  • Red Phase: Mass is irrelevant (focus on passing tests)
  • Green Phase: Minimal code naturally has low mass
  • Refactor Phase: Use APP to guide toward simpler solutions

Integration with Simple Design

  1. Tests Pass (Rule #1) - Always highest priority
  2. Reveals Intent (Rule #2) - May increase mass for clarity
  3. No Duplication (Rule #3) - Extract to reduce mass
  4. Fewest Elements (Rule #4) - Aligns with low mass goal

Simple Design Rule #2 trumps APP - Choose clarity over low mass. APP helps choose between equivalent clear solutions.

When to Apply

  • During refactoring to choose between working solutions
  • When comparing algorithms of similar functionality
  • To guide toward simpler implementations

When NOT to Apply

  • Never sacrifice clarity for lower mass
  • Do not optimize prematurely based on mass alone
  • Performance requirements may override mass considerations
  • Domain complexity may require higher mass solutions

Limitations

  • Not a direct indication of readability
  • Ignores performance characteristics
  • Validity unclear for general-purpose code (best for algorithm comparisons)
  • Favors functional programming due to loop/assignment penalties
  • The best specific mass values are unknown; these are Micah's suggested weights

Sources

Compartilhar X LinkedIn