Tag Archives: strings

.NET – Transforme strings em Resources com o Resource Refactoring Tool

Não é de hoje que deixar valores de domínio em strings dentro do código é uma má prática. Qualquer mudança nestas, por exemplo, uma mensagem, obrigará a recompilação do aplicativo.

A ferramenta Eclipse tem um recurso interessante chamado Externalize Strings. Nele, a ferramenta analisa todo o código fonte e coleta todas as strings nele e as coloca em um arquivo de configuração, substituindo-as no código fonte por tokens que serão aplicados em tempo de compilação.

Pois bem. Tive essa necessidade no Visual Studio 2005/2008 recentemente e procurei algo que fizesse a mesma proeza da ferramenta da IBM. Entre as opções, além das pagas, há uma bem interessante e free no codeplex que é a Resource Refactoring Tool. Ele faz um trabalho parecido com o Externalize Strings do Eclipse, porém, colocas as strings em um arquivos do tipo Resources (resx) e faz a substituição da string pelo token respectivo.

Após instalado, a opção é adicionada ao menu Refactor do Visual Studio conforme a figura abaixo:

RefactoringTool-Menu

O arquivo de Resource pode ser selecionado e o Preview do código após a alteração pode ser visto, da mesma forma que as ferramentas do Refactor trabalham:

A janela Extrat to Resoruce
A janela Extrat to Resoruce
Preview Dialog padrão do Refactor
Preview Dialog padrão do Refactor

O Resource Refactoring Tool faz um bom trabalho, apesar de não ser tão completo como o Externalize Strings do Eclipse, já que para “externalizar” as strings de um arquivo de código, é preciso clicar em cada uma e executar a ação de Extract to Resource, enquanto o concorrente é capaz de analisar todo o arquivo de código fonte. Provavelmente está será uma funcionalidade futura da ferramenta.

Mas por ser free, faz um belo trabalho. O link oficial da ferramenta é:

http://www.codeplex.com/ResourceRefactoring

Como é mencionado na página, os desenvolvedores estão em busca de contribuidores para melhoria de ferramenta.

Bom proveito!

C# – Convertendo um Array de String em um String separada por vírgula

Mais uma da série: “tinha que ser mais simples”

Tudo bem que é algo meio atrevido e que inventei agora, mas algumas funções, mesmo meio “sujas”, são tão comumente necessárias no dia a dia que faria mais sentido fazerem parte dos métodos óbvios de um determinados frameworks.

Neste caso, falando em .NET, vamos ver uma forma simples de a partir de um array de strings, produzir uma única string com os itens do array separados por vírgula.

A necessidade apesar de parecer pouco óbvia, nasce de situações simples como interagir com sistemas legados. Um exemplo simples seria a geração de arquivos no padrão CSV, ou até mesmo sem precisar ir muito longe, montar a cláusula IN de uma consulta no padrão SQL.

Pois bem, o método que faz a proeza é o System.String.Join. O método estático requer dois parâmetros, sendo eles:

  • um string que conterá o texto que separará os itens do array
  • o array de strings

Veja um exemplo de código C# abaixo que roda em uma aplicação console:

1
2
3
string[] estacoes = new string[] { "Primavera", "Verão", "Outono", "Inverno" };
string result = String.Join(", ", estacoes);
Console.WriteLine(result);  // Saída: "Primavera, Verão, Outono, Inverno"

Bom, confirmando o protesto inicial, poderia ser mais simples certo?

Abraços

Tomás

Trabalhando com strings no VBA

Desenvolvedores VBA, uni-vos!

É sempre bom saber que muita coisa do VBA é equivalente ao VB tradicional, pelo menos até a versão 6. Dele podemos tirar muita coisa interessante para colocarmos em nosso código. Um exemplo é a manipulação de Strings, que neste caso a herança é total, podendo usar tudo o que a linguagem e o compilador VB oferecem, por exemplo, o operador Like, pouco conhecido nas comunidades que frequento. Uma explicação bem completa sobre Strings no VB, totalmente aplicável ao VBA pode ser vista neste link:

Trabalhando com strings no VBA – http://www.macoratti.net/strings.htm

É só uma pequena amostra do que o VBA ainda nos tem a oferecer.
Bom proveito!

Tomás Vásquez