DEV Community

<deMGoncalves />
<deMGoncalves />

Posted on • Updated on

Simplicidade vs Padrões de Programação: Como encontrar um equilíbrio saudável

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 é 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 é 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. Em vez de seguir padrões complexos de programação, o 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 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 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. O código demonstra como o Kuba pode tornar a criação de componentes fácil e intuitiva.

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
Enter fullscreen mode Exit fullscreen mode

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.

Com o 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 é 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.

Top comments (0)