Olá Pessoal.
Como vocês sabem estamos sempre nos esforçando pra entregar soluções melhores. Nos esforçamos a fazer isso nos nossos códigos, mesmo tendo uma equipe reduzida.
Um problema que sempre nos incomoda é units com milhares de linhas.
Isso não é boa prática de programação. Torna a legibilidade do código ruim. Dificulta a manutenção.
Nesse sentido, uma das que mais notamos isso é a unit ACBrUtil.pas. Ela é uma unit utilitária que foi aglutinando mais e mais código com o passar dos anos.
O que fizemos?
Queremos dizer que resolvemos fazer alguma coisa sobre isso e começamos por dividir essa a unit ACBrUtil.pas em várias outras separando o código e migrando tipos e rotinas para as outras.
A princípio, a separação ficou assim:
"ACBrUtil.DateTime.pas" - rotinas relacionadas a manipulação de datas e horas
"ACBrUtil.FilesIO.pas" - rotinas relacionadas a manipulação de arquivos, IO, e similares
"ACBrUtil.Math.pas" - rotinas relacionadas a manipulação de números e conceitos matemáticos
"ACBrUtil.Strings.pas" - rotinas relacionadas a manipulação de strings e textos
"ACBrUtil.XMLHTML.pas" - rotinas relacionadas a manipulação de XML e HTML
"ACBrUtil.Compatibilidade.pas" - rotinas relacionadas a compatibilidade.
"ACBrUtil.Base.pas" - Todas as outras rotinas que não se encaixam nas units acima
"ACBrUtil.pas" - Essa unit atualmente só serve como compatibilidade. Você deve substituir ela no seu código pelas acima.
Quando?
No momento dessa notícia ser escrita, a previsão do código é ir no final do dia de 23/03/2022.
Já está no nosso SVN.
O que isso significa no meu código?
A princípio, a única coisa necessária a ser feito na sua aplicação é atualizar e reinstalar o ACBr. MAS...
Vocês devem notar que se utilizarem alguma função da ACBrUtil.pas que foi migrada, começará a receber um warning que a função mudou para outra unit. Você deve atualizar isso assim que possível.
Vamos parar por aí?
Talvez venhamos a dividir ainda em outras units a ACBrUtil restante.
Bem, a ACBrUtil agora foi completamente dividida. Pode ser que venhamos fazer algo semelhante no futuro com alguma ACBrUtil criada. Mas no momento damos esse trabalho por encerrado.
É possível também que façamos isso em outras units que estão acumulando funções, tipos e métodos...
A questão é que não vamos parar de melhorar o ACBr.