Postagens

Mostrando postagens de março, 2011

6 maneiras de fazer a mesma coisa, o que é considerado boas práticas?

As vezes tem tantas maneiras diferentes de fazer o mesmo código que nós ficamos na dúvida quanto a qual maneira usar. O que seria considerado "boa prática" pela comunidade e o que sua equipe entenderia melhor. Suponhamos que você esteja trabalhando dentro de um método de um Domain Service chamado UmDomainServiceChique(objetoDoDominio) que será chamado por uma API. Você tem uma regra de negócio chique para ser verificada que por enquanto chamarei de VerificaMinhaRegraChiqueComplexa(). Você chama UmDomainServiceChique(objetoDoDominio) e caso VerificaMinhaRegraChiqueComplexa() retorne true você vai querer que UmDomainServiceChique faça o que tem que fazer e a api retornar Ok 200, caso contrário você quer que a API responda um erro qualquer, tipo BadRequest, e retornar uma mensagem dizendo que VerificaMinhaRegraChiqueComplexa deu ruim. Eu vejo 6 maneiras de fazer isso, gostaria de saber a opinião de outrs devs sobre qual seria a maneira menos gambiarr

O analista de sistemas

Um homem anda por uma estrada próxima a uma cidade, quando percebe, a pouca distância, um balão voando baixo. O balonista lhe acena desesperadamente, consegue fazer o balão baixar o máximo possível e lhe grita: - Ei você, poderia ajudar-me? Prometi a um amigo que me encontraria com ele às duas da tarde, porém já são duas e meia e nem sei onde estou. Poderia me dizer onde me encontro? O outro homem, com muita cortesia, respondeu: - Mas claro que posso ajudá-lo! Você se encontra em um balão de ar quente, flutuando a uns vinte metros acima da estrada. Está a quarenta graus de latitude norte e a cinqüenta e oito graus de longitude oeste. O balonista escuta com atenção e depois pergunta-lhe com um sorriso: - Amigo, você trabalha como analista de sistemas? - Sim, senhor, ao seu dispor! Como conseguiu adivinhar? - Porque tudo o que você me disse está perfeito e tecnicamente correto, porém esta informação me é Totalmente inútil, pois continuo perdido. Será que você não tem uma

Laço for in no lazarus

Já faz um tempinho que saiu esse feature, mas eu nem fazia idéia. Talvez mais pessoas não saibam. Agora já é possível usar o laço for... in no free pascal. Outras alterações previstas para a versão 2.5.x e muito bem vindas é a adição de generics e a nova sintaxe para classes, permitindo class vars e class properties. Segue abaixo um exemplo do operador for...in usando TStringList e Arrays Dinâmicos. procedure TForm1.Button1Click(Sender: TObject); var lista: TStringList; vetor: array of string; s: string; begin lista := TStringList.Create; lista.Add('Delphi'); lista.Add('Lazarus'); lista.Add('C#'); lista.Add('Java'); lista.Add('PHP'); for s in lista do Memo1.Lines.Add(s); //ou showmessage(s) SetLength(vetor, 5); vetor[0] := 'Laranja'; vetor[1] := 'Maçã'; vetor[2] := 'Pera'; vetor[3] := 'Uva'; vetor[4] := 'Cajá';

Leitura obrigatória sobre strings

A maior facilidade das strings do Delphi em relação ao C e C++ é que elas não são baseadas em operações de "baixo nível" com ponteiros. Elas são facilmente quebradas, concatenadas ou copiadas. No caso das cópias, elas podem ser copiadas com performance pois mantém um contador de referências. Em comparação com as linguagens interpretadas, gerenciadas e com "coletores de lixo" as strings nessas linguagens não são tão performáticas. Cópias de strings não são cópias de referências, mas da string completa mesmo, sem reference counting. Tratando - se de concatenação de strings então, o .Net Framework, até a versão 2.0, que eu saiba, encorajava o uso de StringBuilder em vez de strings dentro de um loop para montar um relatório ou tabela na web, por exemplo. Isso porque ao se concatenar duas strings o .Net Framework cria uma nova string com o conteúdo das duas, destruindo as outras duas, gerando um overhead. Imagine quantas operações dentro de um loop não acontecem quan

A linguagem de programação do futuro

         O empenho em analisar a execução dos pontos do programa desafia a capacidade de equalização das condições inegavelmente apropriadas. Podemos já vislumbrar o modo pelo qual a constante divulgação das informações oferece uma interessante oportunidade para verificação das formas de ação. Assim mesmo, o acompanhamento das preferências de consumo cumpre um papel essencial na formulação do fluxo de informações. O que temos que ter sempre em mente é que o comprometimento entre as equipes promove a alavancagem das diversas correntes de pensamento. Pensando mais a longo prazo, a determinação clara de objetivos faz parte de um processo de gerenciamento das novas proposições.             Por conseguinte, a expansão dos mercados mundiais obstaculiza a apreciação da importância das condições financeiras e administrativas exigidas. Nunca é demais lembrar o peso e o significado destes problemas, uma vez que a crescente influência da mídia maximiza as possibilidades por conta dos conhecimen

Nunca confie no TIOBE

Em vários posts meus eu mencionei o índice TIOBE para relacionar a popularidade das linguagens. Mas eu não sabia como o índice TIOBE funcionava, achei que ele era sério, baseado em projetos, mas ele é mais furado que o IBOPE, muito mais. O TIOBE classifica popularidade como número de resultados nos buscadores. Ele parte de vários pressupostos errados. 1) Assume que popularidade é o número de resultados de buscas de uma linguagem em um mecanismo de busca. 2) Assume que todos os buscadores tem o mesmo peso, embora os resultados sejam muito diferentes e o algoritmo também. 3) Não elimina ruidos. Se você pesquisar por java programming encontrará resultados relacionados com uma programação qualquer na ilha de Java, por exemplo. Além do ruido ser problema, a pesquisa é sempre feita com os termos <linguagem> programming, mas termos diferentes relacionados a uma mesma linguagem podem trazer resultados várias ordens de grandeza maiores ou menores do que <linguagem> programm

GEBRASA nunca mais - sobre e-commerce

Trabalho com e-commerce, mas não farei aqui um post sobre desenvolvimento de e-commerce e sim sobre gerência de e-commerce. Qual é a principal preocupação do cliente, e a principal dúvida ao comprar em uma loja "online"? A dúvida é sempre a mesma: "será que a empresa vai entregar?" O pagamento se dá de maneira muito fácil, via cartão de crédito. Mas caso haja algum problema o cliente sabe que o estorno é um inferno. Se o pagamento é intermediado por uma dessas MOIP ou PagSeguro da vida é pior, pois existe mais uma camada intermediária para atravancar o estorno, que pode demorar até 45 dias e fazer com que a empresa simplesmente tome posse de dinheiro seu emprestado, sem juros. Algumas empresas se confundem ou se enganam na hora de entregar um produto, o que é até aceitável, e entregam o produto errado. Depois demoram muito para devolver o dinheiro ou trocar o produto (Submarino, por exemplo). Mas talvez a demora seja causada pela massa: um volume muito grande

madShi collection

Imagem
Saiu na revista Clube Delphi 127  meu artigo sobre a madShi Collection, uma coleção de bibliotecas muito úteis e interessante. Elas vão além do basicão fornecendo aos programadores funcionalidades bastante inusitadas, como api hooking, e funcionalidades que são uma mão na roda na hora de distribuir seu software ou na hora de encontrar bugs persistentes. O madExcept é um gerenciador de exceções que automaticamente gera um log com nome da unit e até a linha do código que disparou o erro. Seu usuário pode simplesmente clicar em um botão para te enviar o relatório de erros. Espero que gostem do artigo. Boa leitura :)

Dicas de Inglês

O inglês é essencial para programadores. Ponto. Não importa o pais em que você esteja, o inglês é o esperanto que deu certo, pelo menos nessa nossa era. O site Tecla Sap tem muitas dicas interessantes para quem já cursa inglês mas quer sanar dúvidas, pegar dicas ou aprimorar seus conhecimentos. Peguei essa dica hoje no site: Palavras com "L" mudo. Acontece também com outras letras, por isso muita atenção à pronúncia. Ensaie a pronúncia em diálogos reais. ALMS /aams/ Esmola BALM /baam/ Bálsamo CALM /kaam/ Calmo COULD /kud/ Passado do verbo auxiliar “CAN” (poder) HALF /héf/ Metade PALM  /paam/ Palma; palmeira;  palm PSALM /saam/ Salmo SALMON /SÉ m@n/ Salmão SHOULD /shud/ Deveria (verbo auxiliar) SOLDER /SÓ d@r/ Solda TALK /tók/ Conversar WALK /wók/ Andar WOULD /wud/ Verbo auxiliar usado no condicional I’ll have the salmon, please. Vou querer o salmão, por favor. Aluminum is also very difficult to solder. (Chicago Tribune) É muito difícil s

Qual o problema dos Anglicismos?

Imagem
Muitas pessoas respeitáveis, lingüistas, professores, mestres, doutores em geral criticam o uso de anglicismos no dia-a-dia, quer como gírias quer como jargões de profissões emergentes. Na área de Ciência da Computação, Ciência da Informação e outras áreas correlatas há a tendência de mestres e doutores renomados ter uma aversão a novos anglicismos (relacionados a novas tecnologias) propondo seus correspondentes em português. Mas pense: se para designar nomes de seres vivos na Biologia (taxonomia) usa-se o latim, usando-se também na designação de vários termos jurídicos, mundialmente. Além disso usa-se palavras latinas ou gregas para vários termos técnicos da Química, Física, Matemática e Linguística porque não usar o Inglês para as Ciências da Computação e da Informação? Matemática, Biologia, Química, Física e Direito são ciências que começaram a ser estudadas desde os primórdios da humanidade, atravessando a época em que o Grego e o Latim foram as línguas mundialmente predomina