dicas

Dev In Rio, Eu fui!

0

Fala galera,

Como eu já havia contado a vocês, no início da semana ocorreu o Dev In Rio. O Dev In Rio foi um evento  com foco em desenvolvimento de software e metodologias.Foi legal participar, uma penca de coisas foram discutidas.Os principais assuntos foram: Java,RoR e agile. Você pode estar se perguntando o que é um desenvolvedor .NET está fazendo neste tipo de evento, a resposta é facil quando você pensa em comunidade e esquece um pouco de linguagens e frameworks. Eu acho que é muito interessante para um desenvolvedor ser parte ativa da comunidade de software. Este tipo de evento(não .NET) é ainda melhor pois é possível ver o que está sendo debatido e realizado pelo pessoal que utiliza outras tecnologias.O evento ainda trouxe palestras sobre OpenSource e métodologias ágeis. Assim que sobrar um tempo vou postar sobre as coisas legais que aprendi.

akitaOnRails

Tudo que posso dizer é que certamente participarei no proximo ano ;) abraços!Hi folks,

As I told you this week we had a great event in Rio de Janeiro, Dev In Rio was an event that focused on software development. It was very cool, a lot of things were discussed there such as Java, Ruby, Agile and some others things. You might be asking what a .NET developer was doing in this kind of event, the answer is easy if you think about software community and don’t care about languages or framework. I think that is really interesting to a developer be part of software community, this kind of event is even better ‘cause you can see what other communities are doing. There, I could talk to people who use Java, Ruby on Rails and Phyton. Besides some talks about languages we still have presentations about agile methods. As soon as possible I’ll post about some cools things that I learned.

akitaOnRails

All I can tell you is that I’ll be there next year ;) see you!

Comentários segundo Code Complete(Parte 1)

0

Fala Galera,

mais um post sobre comentários.. eu que já havia me convencido a não discutir mais sobre comentários participei de uma discussão neste forum. Existem tantas idéias divergentes(xiitas) quando o assunto é comentar ou não comentar que eu não me empolgo e discutir se é uma boa pratica ou não. Eu gosto de comentários e apoio o uso deles nos projetos em que trabalho, de qualquer forma o principal ponto deste post será o capitulo de comentários do code complete.então vamos lá!

O code complete tem uma visão abrangente sobre o assunto, reservando um capitulo para o mesmo.O livro começa com uma discussao fictícia entre grandes filósofos sobre o assunto. Nesta discussão ele mostra os principais tópicos que são defendidos quando desenvolvedores falam sobre comentários

Contra:

  • Comentários são perca de tempo
  • Codigo bom deve falar por si
  • Comentários estão sempre desatualizados
  • Comentários repetem o que está no código

Pro

  • Comentários desenvolvem o conhecimento em um nível maior de abstração
  • Comentários são como cabeçalhos de livros técnicos, ajudam a buscar a informação

Ainda durante a discussão eles concordam que ter um código com comentários que o repetem ou comentários desatualizados é pior que não ter comentários mas que se bem feitos comentários são eficientes

1-Tipos de comentários

Repetição de código

Este tipo de comentário apenas repete o que o código faz em diferentes palavras, não possui informação adicional apenas faz o leitor do código perder mais tempo

   1: public Int32 somar(Int32 x, Int32 y)

   2:        {

   3:            //retorna o somatorio de x e y

   4:            return x + y;

   5:        }

Explicação de código

Este tipo de comentário explica um pedaço de código complicado ou até um hack, geralmente são usados quando o código é confuso

   1: public String formatarString(String valor)

   2:         {

   3:             //Caso o ultimo caracter seja um underline a string possui espaços separados por &nbsp que devem ser convertidos

   4:             String valorFinal = valor.EndsWith("_") ? valor.Replace(" ", " ") : valor;

   5:             return valorFinal;

   6:         }

Marcadores de código

Usando geralmente para marcar um código inacabado ou ainda um código que deve  ser refatorado

   1: public Int32 somar(Int32 x, Int32 y)

   2:        {

   3:            // TODO: implementar a soma

   4:            return Int32.MinValue;

   5:        }

Sumário de código

usado para descrever o que está sendo feito em poucas linhas,  usado geralmente para comentar funções/métodos

   1: /// <summary>

   2:       /// Formata uma string de acordo com a presença de _ para html

   3:       /// </summary>

   4:       /// <param name="valor"></param>

   5:       /// <returns></returns>

   6:       public String formatarString(String valor)

   7:       {

   8:           String valorFinal = valor.EndsWith("_") ? valor.Replace("&nbsp;", " ") : valor;

   9:           return valorFinal;

  10:       }

Comentários de intenção de código
usados para mostrar a intenção do código, geralmente são escritos em termos do projeto.

   1: public String formatarString(String valor)

   2:        {

   3:            //Formata a string

   4:            String valorFinal = valor.EndsWith("_") ? valor.Replace("&nbsp;", " ") : valor;

   5:            return valorFinal;

   6:        }

Informação que não pode ser expressada pelo código
Usado para representar informação como copyright ou numero de versão

   1: public String formatarString(String valor)

   2:         {

   3:             /* Autor: Higor Ramos

   4:              * Data: 09-09-2009

   5:              * Documentação on-line:http://www.higorcesar.com

   6:              */

   7:             String valorFinal = valor.EndsWith("_") ? valor.Replace("&nbsp;", " ") : valor;

   8:             return valorFinal;

   9:         }

2-Comentários ineficientes
O livro ainda fala um pouco sobre tipos de comentários ineficientes, estes tipos tendem a ficar desatualizados e prejudicar o entendimento do projeto. exemplos:

   1: public String formatarString(String valor)

   2:         {

   3:             /************************************************

   4:              * Caso o ultimo caracter seja um underline     *

   5:              * a string possui espaços separados por &nbsp  *

   6:              * que devem ser convertidos                    *

   7:              * *********************************************/

   8:

   9:             String valorFinal = valor.EndsWith("_") ? valor.Replace("&nbsp;", " ") : valor;

  10:             return valorFinal;

  11:         }

   1: public Int32 somar(Int32 x, Int32 y)

   2:         {

   3:             // Variable      Meaning

   4:             //--------      --------

   5:             // X            primeiro valor a ser somado

   6:             // Y            segundo valor a ser somado

   7:             // resultado    resultado do somatorio

   8:

   9:             var resultado = x + y;

  10:             return resultado;

  11:         }

Galera, tem mais sobre comentários.. vou deixar para o próximo post. abraços

Dicas de Livros e Blogs

1

Fala Galera, quem acompanha este blog sabe que sou um ávido leitor.. Se vocês também as vezes não sabem qual o próximo livro a ser lido ou ainda não sabe qual o livro indicado sobre um assunto esta lista dos 100 melhores livros de engenharia pode ser útil. Eu peguei alguns e adicionei na minha lista ;)   além disso achei no mesmo site outra lista muito boa, uma lista com os 200 melhores blogs de desenvolvimento de software.. Bem, a informação está ai.. Deixem comentários sobre os livros que vocês leram e blogs que já acompanham..

Livros #2

0

Fala Galera, neste post falei sobre meus planos de leitura para os próximos meses ou ainda pode ver o que ando lendo aqui. Hoje cheguei em casa e tive uma grande surpresa.. meus livros chegaram(não tive que ir buscar) são eles: More Effective c# e Framework Design Guidelines.

Livros

Livros

Estava fazendo as contas acho que minha cota de livros de 2009 está encerrada, estou planejando reler os melhores/importantes livros a partir de meados de outubro.. Estou sentindo o ano acabar e vocês? qual foi o balanço de leitura? eu estou me superando a cada ano ;) agora vamos que vamos.. estou cheio de livros para ler e praticar..

ps: O dolar está caindo.. uhuu!! que caia por mais um Mês, pois poderei comprar mais livros..rs

C# CodeSnippet

2

Fala Galera, Estou integrando meu sistema com o  gateway de pagamento da Locaweb. No meio das minhas tarefas de programação  eu estou criando muitas constantes(no meu caso não pode e não faz sentido ser um enum), sendo assim tenho sempre um codigo como o código abaixo:

Não lembro em qual blog eu vi que programadores são preguiçosos por natureza, este post “perdido” possui uma explicação muito boa pra isso,logo eu queria uma maneira mais legal de criar estas constantes, como não existia um code snippet eu criei um, e olha que foi facil :) sendo assim neste post vou explicar quais são os passos para criação de um CodeSnippet.

Um codeSnippet tem sua configuração em um arquivo XML, porem com extensão  “.snippet” .  Você pode criar code snippets simples, que apenas possuem uma porção de código ou ainda pode criar code snippets customizáveis. Vou explicar abaixo como fiz para criar e consumir o meu code snippet.

1-Criar um novo arquivo XML e salvar o mesmo com extensão .snippet

2-aplicar o template abaixo, este é o template de um code snippet simples

Bem, estava pensando em explicar este código mas acho que não precisa certo? olhe o xml com calma, é auto-explicativo, caso tenha alguma dificuldade pode olhar este link , a unica coisa que pode não estar clara é o CDATA, todo codigo do code snippet deve estar dentro desta tag, lembrando que o code snippet pode ter várias linhas de código.

No meu caso eu usei e configurei recursos adicionais, o primeiro recurso adicionado foi criar “replacements”, se você já usou o code snippet do for pode ver que as variáveis de controle podem ser trocadas simplesmente com o uso do TAB.

snippetFor

Para obter tal funcionalidade podemos definir Holders no codeSnippet, olhe o pedaço de XML abaixo

No exemplo acima estou criando dois holders, o primeiro se chama(propriedade ID) type, possui um valor default(default) String e possui uma dica(ToolTip) Coloque aqui o tipo da constante.Como você pode ver é possível declarar mais de um holder. O holder funciona da seguinte maneira, toda vez que no ele encontrar o nome de um holder entre $$ ele sabe que este é um campo que pode ser alterado pelo usuário. Agora segue meu código usando o holder

Então como falei, para usar o holder basta colocar o nome do mesmo entre $$. Agora que temos um codesnippet customizável só falta uma configuração para que possamos usar, temos que configurar o atalho do mesmo.

No meu caso chamei o code snippet de NewConst. Agora posso simplesmente começar a digitar NewConst e apertar 2 vezes TAB e terei meu código.
Segue o código completo

Para usarmos o CodeSnippet precisamos adicionar uma referência no Visual Studio, para fazer isso basta abrir o Menu-Tools->Code Snippet Manager->Import-> selecionar o seu Snippet. Pronto! agora você pode usar o seu Code snippet. O meu ficou assim:

usarConstante

É isso galera, espero que vocês sejam mais produtivos com isso! até mais..

fontes:

http://msdn.microsoft.com/en-us/library/ms165396(VS.80).aspx

http://msdn.microsoft.com/en-us/library/z4c5cc9b(VS.80).aspx

C# Yield

1

Fala Galera, depois de aprender a usar a keyword let fiquei um tanto quanto interessado em aprender keywords não tanto populares, eis achei a keyword Yield. Li posts super empolgados sobre a keyword e realmente ela é super legal.

Acho melhor ir mostrando o uso e falando das vantagens. A primeira coisa que devemos saber é que o Yield é uma keyword fundamental para trabalhar com Iteradores, veremos também qual é  a sua importacia por tras de tipos que utilizam Iteradores, principalmente os Enumerables.

Um exemplo comum de código é a filtragem de sublistas de acordo com um dado aspecto, estou querendo falar sobre casos como o exemplo abaixo:

ps:Desconsidere as muitas outras opções de realizar a mesma ação

Acho que a intenção do código de exemplo está ok, certo? sendo assim voltando  ao yield a idéia do mesmo é prover uma melhor maneira de trabalhar com iteradores,
então podemos reescrever nosso método da seguinte maneira:

Esta é uma das maneiras de usar o yield. Para entender a logica do funcionamento acima temos que recorrer ao funcionamento dos iteradores, basicamente temos que saber que os mesmos geralmente possui um método Next() ou também chamado de MoveNext(), o que o método next faz é mover o ponteiro para o proximo item a ser ‘retornado”. O que isso tem a ver com o yield? simples! quando nós usamos o yield return não estamos saindo da função, estamos falando que após o return haverá uma pausa, e quando o proximo item for requisitado(MoveNext)a execução continua de onde foi pausada.

Vantagens

  1. Quantidade menor de código
  2. Desempenho aprimorado
  3. Lazy Loading(ainda será explicado)
  4. Demonstrar conhecimento sobre a linguagem

1-Podemos representar o mesmo código de maneira mais simples

2-O codigo com yield tem quase 1/4 do tamanho do mesmo código com sublista quando representado em MSIL

3-O yield é fundamental para a execução postergada, pois o mesmo prove a opção de recuperar a informação apenas no momento de real utilização da mesma. O yield está por baixo de muita coisa do LINQ .

4-Por ultimo, o yield pode ser usado quando você estiver sem papo com a equipe de desenvolvimento :)

O yield ainda pode ser usado com a keyword break, que define o fim da enumeração, você pode encontrar mais informações aqui

fontes:

http://blogs.microsoft.co.il/blogs/shayf/archive/2008/06/06/give-way-to-the-yield-keyword.aspx

http://en.wikipedia.org/wiki/Coroutine

http://startbigthinksmall.wordpress.com/2008/06/09/behind-the-scenes-of-the-c-yield-keyword/

http://www.ytechie.com/2009/02/using-c-yield-for-readability-and-performance.html

http://www.informit.com/articles/article.aspx?p=725693&seqNum=3

livros #1

0

Fala Galera, férias da faculdade chegando e eu como um bom “geek” já preparei a lista de livros..rs são muitos, fato que não irei ler todos e um mês mas como sou meio compulsivo em livrarias.. sabe como é.. para começar o mês algo leve: Paradigmas de software aberto, livro leve, bem escrito e cheio de motivações e pensamentos sobre o tal.. se você gosta de OpenSource e não entendi muito sobre as motivações, licenças e coisas relacionadas te indico.  Outros livros adquiridos foram:

pilhalivros

Code Complete

Refatorando para padrões

Por  que assim e não assado

More Effective c#

Design Framework Guideliness

O unico problema é escolher qual será lido primeiro, sendo que os dois ultimos comprei no amazon logo só em agosto.. :| estou inclinado a começar pelo refatorando para padrões já que o CodeComplete é gigante..Bem, fica ai a dica de livros, e você já sabe o que vai fazer? conte ai!

Finalmente.. Blog Novo

2

Fala galera, Finalmente tomei vergonha(rsrs) e comprei um domínio para colocar meu blog no ar.Desde que inicei neu blog queria comprar um domínio mas como não ligava muito.. até que ei vi uma promoção de domínios por menos de R$7,00 no UolHost. Ai foi só alterar meu plano de hospedagem do projeto comperio para abrigar meu blog. Os endereços antigos são: wordpress e blogspot. Ainda tentei umas hospedagens free 00host ou laiveli .

Isso ai galera, se você quer ter um blog mas está meio sem $$ ainda é possível, no pior dos casos ainda pode usar o wordpress.com que é um excelente host e depois e só exportar tudo para seu blog novo.. Espero retornar aos posts, agora tenho mais uma motivação ;) ..  fica a dica..

Fixing Broken Windows

0

Hi folks, how are you? I know my last post was about 20 days ago, I had told you about the scientific program I am doing so I have a lot of things to post here, I think the more exciting one is that I’m using the ASP.NET MVC and everything is going right.
Now I’m writing about a theory that always make me think when I’m doing something, especially at work. This is called The Broken Window theory, this theory isn’t from science computer but reading the pragmatic programmer I noticed it is too much important and full of meaning.

Event:

“Consider a building with a few broken windows. If the windows are not repaired, the tendency is for vandals to break a few more windows. Eventually, they may even break into the building, and if it’s unoccupied, perhaps become squatters or light fires inside.
Or consider a sidewalk. Some litter accumulates. Soon, more litter accumulates. Eventually, people even start leaving bags of trash from take-out restaurants there or breaking into cars.”

Solution:

“A successful strategy for preventing vandalism, say the book’s authors, is to fix the problems when they are small. Repair the broken windows within a short time, say, a day or a week, and the tendency is that vandals are much less likely to break more windows or do further damage. Clean up the sidewalk every day, and the tendency is for litter not to accumulate (or for the rate of littering to be much less). Problems do not escalate and thus respectable residents do not flee a neighborhood.”

Wikipedia

So as I told you, I read about it in pragmatic programmer and the authors brought this idea to science computer field. You can think that the broken windows are some little problems that are allowed when a project is running.For instance if you are developing and you don’t know the correct command to use when you want go to the next iteration of a loop(this occurred with me today, the command which I was searching is the continue in c#) you can use other command such as a return. So you think there is no problem just this bad code nobody minds. Some days after this little problem other programmer is using your code and he doesn’t know how to write one query so he thinks: there is no problem just more one bad code other day I fix it. So can you see the relationship between the broken windows and software development? You can solve this problem fixing any problem when it appears in your code.
This is al folks; I will post about my project on the weekend. If you want more references you can get it at wikipedia and pragmatic programmer

Design By Contract is Coming back

0

Hi folks, Last week I saw an entry from Otavio’s blog. He wrote about design by contract. So, I don’t know if you remember I wrote something about it some time ago. I learned it reading the pragmatic programmers. I really liked it, so I spent some time looking for tools those could be used with .NET. I found some tools but these that I found were a kind of framework developed by people also like design by contract. So, reading octavio’s entry about design by contract I was very surprise, his entry is called Design by Contract – The Return. He also said about one tool that I’m downloading now. Furthermore he wrote that a famous Microsoft engineer called Somesegar also wrote about it. So, it made me think could be it a return? What is means, More overhead or really pragmatism ?

Go to Top