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...

Linux, windows, cloud computing e uma geração de pnéis

Sobre linux, windows, linguagens de programação


Aqui passeando pela net, por motivos um tanto quanto estranhos, resolvi pesquisar sobre o  Kurumin, projeto que como todos sabemos
já está oficialmente descontinuado, e que uma tentativa de continuação gerou alguns atritos entre seus desenvolvedores.
Encontrei um link interessante aqui http://www.gdhpress.com.br/blog/linux-desktop/, onde Morimoto fala que o linux no Desktop já não é tão importante assim, tendo em vista que ele já domina nos servidores e nos sistemas embarcados, e que nos desktops o que irá imperar são as aplicações na nuvem.


Existem muitos comentários, mas este em especial, do próprio morimoto me chamou a atenção:

Eu considero que proposta político-filosófica tem mais atrapalhado do que ajudado na popularização do Linux. Essa insistência em tentar associar "software-livre" com socialismo, militância e movimentos de esquerda é um fator que causa mais aversão ao sistema do que qualquer deficiência técnica.


Concordo plenamente tanto com o artigo como com o comentário.

Já fiz muitos posts apaixonados sobre tecnologias (Delphi) e Sistemas operacionais livres.
A grande realidade é que nenhuma dessas tecnologias realmente embarcará se não te ajudar a:
1) Ganhar dinheiro
ou
2) Economizar dinheiro
ou ainda
3) Economizar tempo e ganhar entretenimento


Computadores são mais do que simples máquinas. E saber programar é antes de tudo um exercício de administração. Parece um paradoxo dizer que programação (geralmente asociada a área de exatas)
se relacione com administração, mas você tem muitas coisas a administrar: tempo, performance, espaço em disco, espaço em memória etc... As vezes forças mutuamente exclusivas devem ser equilibradas.
Um exemplo disso é um compressor de arquivos, como winzip. A opção mais rápida compacta menos, gerando um arquivo maior e maior ocupação de espaço. A opção que compacta mais exige mais processamento, demora mais para compactar.

Acredito que o kurumin teve seu início, meio e um fim digno, mas toda distro linux, por ser livre, é mais efêmera. Elas tem um tempo de vida mais curto no desktop.
O windows é um SO que já mudou totalmente, várias vezes, mas continua com o mesmo nome e a mesma marca. Já o linux ele evolui através de distros.
A distro do momento agora, para desktop, é o ubuntu (entre algumas outras muito interessantes). Mas isso pode logo mudar.

O linux em desktop parece que nunca vai pegar. Isso porque os jogos, em sua maioria, não rodam no linux, pelo menos não sem um grande esforço e queima de neurônios por parte do usuário.
E é perfeitamente compreensível que o usuário não queira queimar neurônios em seu período de lazer.
Agora em dispositivos móveis e servidores o linux é imbatível e não tem pra ninguém.

Esse artigo explica muito bem porque alguns encontram dificuldades e até gentem uma certa aversão pelo linux:
http://apimente-br.tripod.com/LNW.htm 

Eles tentam encontrar no linux um windows legal e de graça. Não. O linux é outro SO, outro tipo de SO. Talvez o ReactOS um dia seja esse windows livre. Vale a pena conhecer: http://www.reactos.org/en/index.html

Uma coisa que parece uma tendência, e que se fala muito, é de computação na nuvem ou cloud computing.

Além de hospedagem para aplicações e serviços esse novo hype engloba as proprias aplicações em si. Um exemplo é o Google docs, google apps e EyeOs (meu preferido).

Muitos aplicativos completos, e até jogos rodam hoje a partir do browser, e novas tecnologias como Yui, mootols, JQuery e silverlight tornam as aplicações web cada vez mais parecidas com aplicações desktop.

Nesse novo contexto os browsers são o SO da nova era, e o javascript e html são como Assembly para esses novos SO's.
Por favor, isso é apenas uma metáfora, porca eu confesso, mas não é para ser levado ao pé da letra.
 
Sou meio cético quanto a cloud computing. Isso porque parece um retrocesso e uma volta aos terminais burros. Se cada ano que passa as hd's, processadores e memórias ficam maiores e mais poderosos me parece um contra-senso, desperdício e até uma afronta ao meio ambiente jogar tudo na web e manter o seu ambiente vazio.
Além disso você deve partir do pressuposto de que a web é 100% confiável, infalível e que qualquer indivíduo que faça algo ilegal na web possa ser identificado, o que demanda o cadastro de um documento no serviço da web, que por sua vez acaba com o anonimato na rede.
Em vez dessa volta ao terminal burro eu acredito em computação ubíqua, onde os seus arquivos e programas não estarão apenas no servidor da web, mas onde você quiser: computador, celular, notebook, televisão. E com sincronia. Cada vez que você atualiza um documento do seu celular, por exemplo, o documento é sincronizado com os outros lugares onde ele é armazenado.
Lógico que todos os seus documentos não vão caber no celular, mas eles podem ser "browseados" (que anglicismo tosco meu Deus) a partir da web ou de seu PC, baixados para o celular e editados sob demanda, voltando para o lugar de onde vieram e retransmitindo as atualizações. Tudo isso, claro, com controle de versão e tunel do tempo, igual o google wave.
Além disso é necessária uma inteligência para, ao se compartilhar arquivos com os amigos, ter a opção de compartilhar, em vez de cópias de um arquivo, O MESMO arquivo, para que todos possam editar ao mesmo tempo.

Uma outra coisa, interessante, seria toda uma infraestrutura de processamento paralelo. Já que as casas vão ser equipadas (se já não o são) com vários dispositivos inteligentes, como celulares, computadores, videogames e televisores, porque não compartilhar/dividir o processamento?
Assim, cada vez que um aparelho precisasse fazer um processamento difícil, como a renderização de um gráfico 3d, poderia "pedir ajuda" para um que estivesse ocioso, como a TV.
Para evitar que todos os aparelhos ficassem ligados ao mesmo tempo desperdiçando energia elétrica o usuário poderia assinar um serviço de processamento/servidor online. Isso sim seria a verdadeira cloud computing: caso uma aplicação necessitasse de uma grande demanda de cálculos e processamento, como um game, ele poderia, através da computação paralela/clustering, dividir o processamento (ou uma porcentagem dele) com um servidor online pelo qual você paga uma assinatura para usar processamento dele em cluster.


Bom, viajei?

Comentários

  1. Não, vc não está viajando, bem pelo contrário, isso é preocupante, pois estariamos dando poder do nosso processamento para terceiros.... então, ficaríamos dependentes disso... é retrocesso sim, pois além de ser uma grande jogada de mercado das gigantes, para venderem suas potentes máquinas servidoras eliminaria a concorrencia das máquinas personalizadas (Com R$3000,00 vc compra uma máquina razoável na DELL, com esses mesmos R$3.000,00 vc monta uma CPU 10 vezes superior). Não teríamos mais privacidade de dados, pois tudo estaria nas mãos de terceiros !

    Cloud Computing é perigoso !

    ResponderExcluir
  2. Você tem razão, mas não sejamos tão radicais. Eu vejo um segundo nicho de mercado para cloud computing: em vez dos servidores serem todos na nuvem em poder das respectivas empresas, eu penso que você pode comprar ou montar seu servidor tendo sua "mininuvem" no trabalho ou em casa.

    Pode ainda haver soluções mistas onde o processamento fica em casa e o storage na "nuvenzona"

    Por exemplo, com o aumento da popularização do pc e da internet, junto com sua banalização, que está tornando o acesso a internet tão trivial quanto a TV hoje, as pessoas podem ter em casa muitos computadores, assim como tem muitas televisões. Uma pessoa pode comprar um appliance para ser seu servidor/sincronizador pessoal de documentos (tipo google docs - eu prefiro eyeos) e assim ter a nuvem em casa, em vez de numa empresa.

    Se a pessoa está em um hotel, ela manda seu documento para ser armazenado e talvez versionado na nuvem: sua nuvem.

    ResponderExcluir

Postar um comentário

Postagens mais visitadas deste blog

Botão Add This para adicionar seu post em qualquer rede

Busca de CEP com o Lazarus - Parte 1 - UrlEncode

Uso de memória no SQL Server