DEV Community

Fellipp Mota
Fellipp Mota

Posted on

Número por Extenso: Conversor Online Grátis

Como desenvolvedores, adoramos um bom desafio lógico. Mas, às vezes, as tarefas que parecem mais simples são as que escondem as maiores armadilhas.

Recentemente, precisei implementar uma feature que parecia trivial: converter um valor numérico para sua forma por extenso em português. (Ex: 1520,50 -> "mil quinhentos e vinte reais e cinquenta centavos").

Eu pensei: "Isso é só um if/else glorificado, certo?"

Errado. Muito errado.

O Pesadelo das Regras Gramaticais

No momento em que você começa a prototipar, a complexidade explode. A gramática portuguesa para números é um campo minado de exceções:

  • 100 é "Cem", mas 101 é "Cento e um".
  • 1000 é "Mil", mas 1001 é "Mil e um". (O "e" aparece).
  • 1500 é "Mil e quinhentos".
  • 2000 é "Dois mil". (O "Um" desaparece).
  • 1.000.000 é "Um milhão", mas 2.000.000 é "Dois milhões". (A pluralização!)
  • E nem me fale da diferença entre o conector "e" para centenas, dezenas e unidades.

O que começa como um script simples rapidamente se transforma em uma biblioteca de centenas de linhas, difícil de manter e testar.

O Dilema: Construir vs. Usar (Build vs. Buy)

Como engenheiros, nossa primeira inclinação é sempre "Eu posso construir isso". E nós podemos. Existem bibliotecas (libs) robustas em várias linguagens (como numero-por-extenso no Node.js) que já resolveram esse problema.

Mas e se você não puder adicionar uma nova dependência ao projeto? E se for apenas para um micro-serviço, um script de teste, ou até mesmo para popular dados em um ambiente de QA (Quality Assurance)?

Você realmente quer gastar uma tarde inteira escrevendo e testando todas as regras de exceção do português, ou pior, adicionando uma lib pesada para uma única tarefa?

A Solução Rápida: A Ferramenta como "Endpoint"

Para o meu caso, eu precisava de uma solução rápida para gerar dados de teste para um sistema de faturamento (invoicing). Eu não precisava de uma biblioteca, eu só precisava da saída de dados.

Acabei usando uma ferramenta online simples como um "endpoint" de desenvolvimento. Para desenvolvedores que precisam de uma solução rápida para testes, ou para uma tarefa simples sem adicionar dependências, um utilitário online direto é o caminho.

Recentemente, para validar um fluxo de contrato, usei o Conversor de Número para Extenso do DevData4.

É uma ferramenta "what-you-see-is-what-you-get". Você digita o número, ele te dá a string formatada, incluindo centavos.

Conclusão

Às vezes, a melhor solução de engenharia não é escrever código, mas sim reconhecer quando não é preciso. Lidar com a gramática de moeda é um desses problemas "surpreendentemente difíceis".

Para seus testes de QA ou para gerar dados de exemplo, não reinvente a roda. Use uma ferramenta que já a resolveu.


Top comments (0)