Postagens

Records, memória e RTTI

Imagem
No artigo anterior eu falei um pouco sobre como os Records podem ser uma mão na roda. Mas e como a memória é gerenciada com ele? Como devo trabalhar com a Rtti? Grave bem essas perguntas! Gerenciamento de memória Um dos fatores que tornam os Records tão práticos é o fato de, ao saírem do seu escopo, são automaticamente liberados da memória. E ao se tornarem “tipos gerenciáveis” (por favor, reparem nas aspas), ficaram ainda mais poderosos. Barry Kelly fez um pequeno experimento para exemplificar este poder (clique aqui para abrir o site dele) . Um fato que me preocupou durante as pequisas que fiz, foram algumas afirmações que o gerenciamento de memória do record não era boa. Que ao ser passado por parâmetro, era feita uma “cópia do record na memória”. Isso me deixou bastante preocupado. Se eu utilizo um record como DTO, ao transitar por entre métodos (e quem pratica o clean code escreve bastante métodos), eu teria cópias e cópias de objetos pesados em memória. Mas a coisa não é...

Record, operadores e uma mão na roda!

Imagem
Record é uma das estruturas de dados mais simples, desde o pascal, que foi turbinada na Delphi language: Agora suporta propriedades, métodos e seu controle de visibilidade e… OPERATOR OVERLOADING! Vamos falar sobre Records Como eu já disse, são estruturas de dados bem simples. E com a vantagem de que é automaticamente destruída assim que se atingir o fim do escopo. O gerenciamento da memória utilizada também é rápida, uma vez que ela vai direto pro stack — que é bem mais rápida que a heap. As novidades que a Delphi Language introduziu nos records, além de expandir as possibilidades com esta estrutura, também possibilitou “resolver” um problema comum com os tipos inicializados à partir da stack. Neste setor da memória, as variáveis não são inicializadas. Portanto, você pode ter inteiros com valores aleatórios, variáveis de objeto apontando para um fragmento de memória qualquer e Records com o mesmo valor da última chamada (geralmente acontece quando o tipo de retorno da variáve...

Home Office funciona?

Imagem
Que a internet vem quebrando barreiras, todo mundo já sabe. Mas será que ela já quebrou as barreiras do escritório? Basta ver a quantidade de vagas disponíveis para perceber que a demanda por bons profissionais, na área de T.I., é grande. Ainda que cursos (universitários ou não) estejam cada vez mais acessíveis, as empresas estão ávidas por bons profissionais. Eu gosto de enfatizar o “bons”, porque para falar bem a verdade, existe sim uma certa disponibilidade. Mas poucos são os realmente bons. Qual o perfil do profissional? Já falei antes sobre as qualidades de um bom desenvolvedor. E além dos requisitos básicos de um desenvolvedor (o mínimo para você ser contratado), é preciso um pouco mais. O bom profissional é proativo, comunicativo, responsável e comprometido. Essa qualidades, no meu ponto de vista, são imprescindíveis para quem anseia por trabalhar Home Office. Em casa não haverá um patrão dizendo a todo momento o que você tem de fazer. Aliás, este comportamento não é ac...

DDD, o que [não] é?

Imagem
Uma noite dessas, assisti uma palestra sobre TDD. O palestrante não parava de falar, no entanto, sobre como DDD facilitava o controle da persistência dos dados. Como queria escrever um pequeno framework de persistência, não tive dúvidas: Comprei um livro e comecei a estudar. O que descobri foi interessantíssimo. DDD não tem nada a ver com isso. Pelo menos não principalmente. Talvez a melhor forma de entender o que é o Domain Driven Desing, é tentar colocá-lo numa estante de livros. Ao lado de que livro você colocaria o livro de DDD? Desing Patterns Não importa a linguagem, você pode implementar os padrões de projeto para resolver problemas cotidianos. Eles são soluções já testadas e amplamente utilizadas pela comunidade de desenvolvedores. Como o próprio nome diz, eles são padrões. Como se fossem uma forma inicial, da qual você pode derivar novas implementações. Nem todo builder, por exemplo, necessita de um director. O que revela algo importante: Os Design Patterns são padr...

O lugar da mulher na TI

Imagem
Margaret Hamilton ao lado do código fonte do programa que levou o homem à Lua. As discussões de gênero e o feminismo tem levantado debates que questionam o status quo. O efeito vai desde a conscientização de algumas mentes até a hermetificação de outras. Será que a área de TI, que se gaba de seu espírito vanguardista, de constante atualização, tem se atualizado também nas questões de gênero? É possível que não. Na busca por culpados, em primeiro lugar vem a própria sociedade. Esta reforça estereótipos machistas, escondidos sob o manto da “naturalidade”. Afinal quem nunca ouviu: “a mente da mulher não é tão lógica quanto a do homem”? São construções sociais como estas que tem feito com que apenas 16% das pessoas que trabalham com TI se declarem do sexo feminino. Isso em um universo numérico em que as mulheres representam mais de 50% da população nacional. Qual o motivo? Apesar da história da computação ter eternizado o nome de várias mulheres brilhantes, TI se apresenta como...

Builder, pra quê te quero?

Imagem
Que os Padrões de Projeto (GoF) são uma mão na roda, todo mundo sabe. Mas que nunca olhou para este ou aquele padrão e perguntou “Quando é que eu vou precisar desta bomba”? Minha proposta é te ajudar a responder esta pergunta (ou não). Hoje vamos começar pela padrão Builder. Na DB1 Global Software, empresa em que trabalho, estamos participando de um jogo chamado “mestre dos códigos”. Entre as tarefas deste jogo está o uso de alguns padrões de projeto e também de teste unitários. Então em pensei: por que não usar os dois? Faço essa pequena introdução pensando nas pessoas poderiam perguntar: mas por que você não usa framework para mockar os objetos? Oras, porque eu queria usar builders! Story A proposta era criar um componente onde o cliente pudesse informar colunas, tabelas, condições, junções e etc. Ao final do processo, o componente teria de ser capaz de gerar SQL de acordo com as informações inseridas. Indo um pouco além, me propus que este componente pudesse gerar SQL pa...

Como ser um programador profissional? (ou como deixar de ser o sobrinho)

Imagem
Nós desenvolvedores odiamos os “sobrinhos” não apenas porque eles destroem o mercado, cobrando mais barato pelo trabalho. Mas porque, geralmente, eles arrumam emprego e daí somos obrigados a dar manutenção no código deles. O que nos leva a seguinte pergunta: Você odeia o sobrinho, mas será que você não programa como um? so·bri·nho (latim sobrinus, -a, -um, primo direito) substantivo masculino Indivíduo que cobra baratinho para fazer aquele programinha ou sitezinho. Martin Fowler, em mais de um dos seus aforismos geniais, disse: “Qualquer idiota pode escrever código que um computador entenda (…)” Fazer código, juntar blocos, fazer as coisas funcionarem é, de modo geral, fácil. Mas nenhum profissional escreve um programa apenas para funcionar. Isto é o mínimo que se espera dele. Um profissional escreve um programa para dar lucro. E não importa qual é o seu modelo de negócio, você sempre passará mais tempo fazendo a manutenção do software do que o escrevendo de fato. E o tem...