Pequenas dicas do dia a dia para quem realmente gosta de programar.
Se a sincera frase de um ator desconhecido que diz "Honestidade em pequenas coisas nunca é uma coisa pequena" é verdade, então também venho a crer que qualidade de código em pequenos códigos nunca é tempo perdido.
Veja uma situação simples que foge de 70% dos bons desenvolvedores:
Suponhamos que você tenha que percorrer uma coleção de objetos que estão em um array.
E precisa percorrê-lo.
É claro que o primeiro código que te vem a cabeça é
Não tem problema, na minha também, mas o que você não sabe é que pequenas atitudes mudam o mundo. No código acima, todas as vezes que o loop for executado você também executará uma chamada ao método ...
Agora, se puxarmos esta chamada para fora do laço, executaremos somente uma vez e todas as verificações sequenciais serão sobre uma constante.
Não acredita que melhora?
Olha o tempo na execução do código abaixo.
E só a título de curiosidade, se fizermos o foreach.
Interessante né?
Logo, mande bem com for e comparação fora do laço.
Se a sincera frase de um ator desconhecido que diz "Honestidade em pequenas coisas nunca é uma coisa pequena" é verdade, então também venho a crer que qualidade de código em pequenos códigos nunca é tempo perdido.
Veja uma situação simples que foge de 70% dos bons desenvolvedores:
Suponhamos que você tenha que percorrer uma coleção de objetos que estão em um array.
1 | var array = new string[arrayLength]; |
E precisa percorrê-lo.
É claro que o primeiro código que te vem a cabeça é
1 | for (int i = 0; i < array.Length; i++) { /* qualquer coisa... */ } |
Não tem problema, na minha também, mas o que você não sabe é que pequenas atitudes mudam o mundo. No código acima, todas as vezes que o loop for executado você também executará uma chamada ao método ...
1 | array.Length |
Agora, se puxarmos esta chamada para fora do laço, executaremos somente uma vez e todas as verificações sequenciais serão sobre uma constante.
1 2 3 4 5 | var length = array.Length; for (int i = 0; i < length; i++) { //tempo constante } |
Não acredita que melhora?
Olha o tempo na execução do código abaixo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | using System; using System.Diagnostics; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int arrayLength = 10000; var array = new string[arrayLength]; for (int i = 0; i < arrayLength; i++) { array[i] = string.Format("[{0}] = {1}" , i.ToString() , Guid.NewGuid()); } Stopwatch sw = new Stopwatch(); sw.Start(); for (int i = 0; i < array.Length; i++) { /* qualquer coisa... */ } sw.Stop(); Console.WriteLine(sw.Elapsed); sw.Reset(); sw.Start(); var length = array.Length; for (int i = 0; i < length; i++) { //tempo constante } sw.Stop(); Console.WriteLine(sw.Elapsed); Console.Read(); } } } |
E só a título de curiosidade, se fizermos o foreach.
Interessante né?
Logo, mande bem com for e comparação fora do laço.


Comentários
Postar um comentário