Simplicidade vs Padrões de Programação: Como encontrar um equilíbrio saudável
Tags: webcomponents, javascript, html, css
Published: 2023-04-06 13:10:47

Nos últimos anos, muito tem se falado sobre seguir padrões de programação para manter a qualidade do código e tornar o desenvolvimento mais fácil e eficiente. No entanto, às vezes, esses padrões podem estar matando a simplicidade do seu código e dificultando a manutenção a longo prazo.

O projeto de referência [kuba](https://github.com/deMGoncalves/kuba) é uma alternativa que busca manter a simplicidade do código, sem abrir mão de conceitos importantes como **Domain-Driven Design (DDD)**, **Clean Architecture** e **Web Components**. Além disso, o [kuba](https://github.com/deMGoncalves/kuba) é uma opção mais simples e fácil de aprender do que outras plataformas populares, como React, Angular e Vue.

A simplicidade é uma das principais vantagens do [kuba](https://github.com/deMGoncalves/kuba). Em vez de seguir padrões complexos de programação, o [kuba](https://github.com/deMGoncalves/kuba) oferece um conjunto mínimo de ferramentas e conceitos que permitem desenvolver rapidamente aplicações web de alta qualidade. Com a arquitetura baseada em Web Components, o [kuba](https://github.com/deMGoncalves/kuba) permite que os desenvolvedores criem componentes reutilizáveis e organizados, tornando a manutenção e a atualização do código muito mais fácil.

O [kuba](https://github.com/deMGoncalves/kuba) também segue as práticas de Domain-Driven Design e Clean Architecture, que ajudam a manter o código limpo, organizado e fácil de entender. Com esses conceitos, é possível construir aplicações robustas, escaláveis e de fácil manutenção.

O exemplo de código abaixo é um componente de telefone simples criado usando o [kuba](https://github.com/deMGoncalves/kuba). O código demonstra como o Kuba pode tornar a criação de componentes fácil e intuitiva.

```javascript
import * as filter from '@kuba/filter'
import * as validator from '@kuba/validator'
import { paint, repaint } from '@kuba/h'
import component from './component'
import imask from '@kuba/imask'

@paint(component)
@imask
class Telephone {
  #state
  #value

  get state () {
    return (this.#state ??= '')
  }

  get value () {
    return (this.#value ??= '')
  }

  constructor (props) {
    this.#value = props.value
  }

  @filter.value
  @validator.required
  onChange (value) {
    this.#value = value
    return this
  }

  [imask.settings] () {
    return {
      element: this[paint.rootElement]().querySelector('input'),
      options: {
        mask: [
          { mask: '+{55} (00) 0000-0000' },
          { mask: '+{55} (00) 0 0000-0000' }
        ]
      }
    }
  }

  @repaint
  [validator.outlet] (state) {
    this.#state = state
    return this
  }
}

export default Telephone
```

Observe que este componente é uma classe simples com algumas funções decoradoras, como `@paint`, `@imask`, `@filter`, `@validator` e `@repaint`, que permitem adicionar lógica de renderização, validação e filtragem ao componente.

O componente `Telephone` inclui um campo de entrada de telefone com máscara, tornando mais fácil para o usuário inserir um número de telefone formatado corretamente. Ele também possui lógica de validação e filtragem integrada, garantindo que o usuário insira um número de telefone válido.

Mais sobre a construção do [Telephone aqui](https://dev.to/demgoncalves/desenvolvendo-um-input-de-um-exemplo-de-design-de-software-eficiente-ed6).

Com o [kuba](https://github.com/deMGoncalves/kuba), o desenvolvimento de componentes é muito mais simples do que com outras bibliotecas populares, como React, Angular e Vue. Isso é porque o Kuba segue princípios de desenvolvimento de software como Domain-Driven Design (DDD) e Clean Architecture, o que torna a estrutura e a organização do código mais fáceis de entender e manter.

Então, se você está procurando uma alternativa mais simples e eficiente para o desenvolvimento de aplicações web, o [kuba](https://github.com/deMGoncalves/kuba) é uma excelente opção a considerar. Com a sua arquitetura baseada em Web Components e o uso de práticas de DDD e Clean Architecture, o Kuba pode ajudar a manter a simplicidade do seu código e a facilitar a manutenção a longo prazo.