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

A diferença entre pirataria, software open-source e software livre

Já vou avisando, o post será looooongo.

Não vou negar que já fui a favor de pirataria. Eu era moleque, e como todo moleque o que eu queria era jogar games, quanto mais barato  melhor.
Eu achava que simplesmente as empresas, produtoras, publishers, gravadoras e outros faturavam muito dinheiro fácil, uma vez que já pronto, o filme, jogo, música ou software era simplesmente copiado e revendido, ao custo de R$1,00 a mídia.
Eu acreditava que havia sim um custo inicial de desenvolvimento mas que esse custo era todo transformado em lucro na hora de vender o software, afinal não se precisaria desenvolver mais, apenas vender. (acredito que seja assim em alguns casos, mas no geral o custo de se manter software, ou de se desenvolver sempre novas versões, além de ser grande, é um custo que se não for investido pode levar uma software - house a desaparecer, simplesmente pela falta de atualização de seus produtos)
Tinha um ideal de que software não é produto, porque é afísico, intangível. É verdade, software não é produto ou objeto, é informação e instrução. Idéias, software são idéias. Como tais, são patrimônio cultural da humanidade, e deveriam ser livres. Liberdade e informação para todos!
É um ideal nobre, pois o software, tal como instruções e processamento, são cálculos, e se patenteassem o fogo, a roda e os algarismos e símbolos matemáticos o que seria do progresso da ciência e da tecnologia? Até a arte estaria comprometida.
Patentes e autoria misturados no mesmo saco? Como se pode patentear uma idéia como a roda ou o fogo? É possível evitar que outra pessoa que não te conhece e que não copiou a sua obra tenha, em época diferente ou ao mesmo tempo, a mesma idéia que você?


Não que este não seja mais o meu ideal, muito pelo contrário, eu ainda desejo isso. Porém como programador e produtor de software eu passo a entender o quanto vale um insight, o trabalho que dá chegar a ele e o valor que ele tem simplesmente pela sua capacidade de ajudar outros a ter seus próprios insights.
Assim como todos têm direito à informação, todos têm direito de ser reconhecidos pela autoria de uma boa idéia sua. Qual direito prevalece, o individual ou o coletivo?


Por isso meu ideal "evoluiu". Ele passou de pirataria a software livre. E eu continuo com o ideal nobre acima, porém agora de maneira "legal". Não uso mais software pirata, uso software livre e quando posso e preciso muito compro um proprietário, apenas se ele for muito melhor e mais fácil de usar que um livre.

Outra grande culpada desses problemas modernos é a legislação, arcaica, que permite que empresas e outras entidades "imortais" adquiram os direitos de autoria que deveriam pertencer somente a seres humanos, e a deter esses direitos inclusive após a morte de seus autores originais, mesmo se esses abrissem mão de seus direitos caso ainda estivessem vivos.
Vou mais além: é obrigação do governo proteger o acervo cultural da humanidade e proteger os dirteitos de seus autores SIM, fazendo, para isso, talvez um repositório de obras originais tal como seus autores as conceberam.
Contudo, passar os direitos autorais de uma obra para seus descendentes parece mais uma consequência funesta das leis de hereditariedade do que uma tentativa de se preservar os direitos de um autor.
Nesse caso sim, creio que deveria prevalecer o direito coletivo à cultura e informação, acima de todo e qualquer interesse que um filho ou neto de autor pode ter. Se alguém quer reivindicar direitos autorais sobre uma obra, que seja autor de uma.
É interessante a lei que coloca sob domínio público uma obra de um autor que já faleceu há mais de 70 anos. (embora entre aí a obrigação do governo de se preservar o legado original, antes que o "domínio público" descaracterize a obra com tamanho número de obras baseadas ou inspiradas).
Mas essa lei só é aplicável à livros, esculturas, músicas e algumas outras obras intelectuais. Coisas mais dinâmicas, como tecnologias, jogos eletrônicos e softwares deveriam cair em domínio público, a meu ver, depois de 10 anos no máximo.

Faço uma pausa aqui para parabenizar as empresas de software proprietário que abrem o código fonte das versões mais antigas de seus softwares assim que versões mais novas são criadas.

Como não podemos esperar isso de um governo ignorante que abre as pernas para decisões estrangeiras arbitrárias colocando a soberania de um pais de dimensões continentais em risco (essa frase ficou muito "bandeira vermelha") ...

O jeito é elogiar e incentivar pessoas, fundações, universidades e empresas que por livre e expontânea vontade abrem mão de certos direitos para contribuir com o avanço da cultura, tecnologia, ciência e entretenimento, simplesmente por abrir ou divulgar suas idéias, seus insights, e seus fontes.
Esta é a filosofia por trás do Software Livre.
Muitas vezes o software livre ou a filosofia por trás dele é tachado de comunismo digital. Bem, eu não sou comunista, nem capitalista, não gosto de nenhuma das duas formas. Acredito que se possa fazer muito dinheiro com Software Livre, e tenho exemplos de empresas que o fizeram.
Gosto de software livre. Gosto de compartilhar meu aprendizado e minhas conquistas, e gosto que outras pessoas também o façam. Gosto de não ter que reinventar a roda e recomeçar do zero em cada software, para que juntos, empresas que façam softwares diferentes possam juntar seus programas como parte de um software maior.

Mas algumas pessoas confuntem software livre com pirataria. http://imasters.uol.com.br/noticia/16043/livre/politicos_americanos_querem_taxar_uso_de_open_source_como_pirataria/

Não, software livre não é pirataria, é um exercício do direito de liberdade de expressão e pensamento. É um toque de arte no software. É um toque de folclore no software. Duvido que te multariam por cantar cantigas de roda ou contar histórias sobre a caipora uma vez que você não é autor destas.

Se o autor do primeiro "Hello World" patenteasse a sua idéia, não teríamos essa divertida tradição em livros e cursos  de programação. E se eu quiser escrever código - fonte em C++, numa pedra encontrada por mim em um rio, e tornar a pedra visível a todos, e tornar o seu texto livre e conhecido? Ninguém pode vetar o meu direito, mas porque vetariam o direito de quem quisesse "citar os dizeres da pedra"?


Alguns ainda confundem software livre com religião, praticamente obrigando todos a adotar software livre e proibindo o proprietário, se metendo nos governos, onde não deveriam se meter. Remexer merda sempre faz ela feder mais. A esses dou meu alerta: obrigar alguém a usar software livre vai de encontro à filosofia do software livre uma vez que você restringe a liberdade de escolha da pessoa.

Se uma pessoa é realmente livre, ela deve ser livre para escolher software não-livre, ela deve ser livre para escolher de quem será escrava. Se ela tiver dinheiro para isso, vontade de adquirir o software proprietario e gostar da embalagem, por que não?

E você acha que o software livre não escraviza? Bom, de um certo modo, você ter o código fonte na mão e a licença GPL te grante o direito de mecher e remecher o software, porém poucos exercem esse direito, mesmo quando um projeto livre morre e fica sem suporte, simplesmente porque não é tão fácil assim entender código fonte escrito por outros, principalmente se usar uma linguagem e parte de sistemas legados que você não domina.
Além disso a GPL diz que o resultado também deve ser livre. Isso por si só não é uma violação da liberdade se você pensar que você está garantindo a liberdade coletiva antes de qualquer proibição individual, e assim, recursivamente, garantindo a sua propria liberdade individual.

Outros ainda confundem software livre com software open-source. Não é a mesma coisa. Software livre quer dizer que a liberdade de alteração e distribuição do mesmo é garantida, embora se conserve o nome do autor original. Porém é proibida a restrição desses direitos à um terceiro. Software gerado em GPL também tem de ser GPL. Você garante os direitos autorais de quem criou, e os direitos de qualquer um que possa se beneficiar de qualquer alteração na obra original.
Software open-source significa simplesmente que o código fonte é divulgado ou distribuido junto com a aplicação. Um software proprietário como o windows poderia ter seu código fonte aberto, e mesmo assim ter tantas restrições legais na sua licença que não o tornariam um software livre.
Um exemplo desse tipo é o Mozilla. A MPL é um exemplo de licença de software open-source que não é livre, devido a restrições que possui.
Ou seja, browser open-source decente ainda tá difícil, não porque não existem, mas porque existem poucos.
Software livre são aqueles softwares que a Free Software Foundation declara que são compatíveis com a licença GPL. Os demais não são livres, ou por restringir mais que a GPL, ou por liberar mais que a GPL, dando assim direito a um terceiro de restringir a liberdade de um "quarto".
No site da Free Software Foundation (http://www.fsf.org/) há uma lista de licenças de software open - source que não são livres, não são compativeis com a GPL.  http://www.fsf.org/licensing/licenses
No site da Open Source Initiative há também uma lista de licenças de software open-source. http://www.opensource.org/licenses/alphabetical
Repare que empresas como Microsoft e IBM também tem licenças de produtos com código fonte aberto. Algumas delas são bastante permissivas, mas não fazem delas licenças livres.

Qual o problema das licenças mais livres que a GPL, como a primeira versão da licença BSD? Essas licenças são, as vezes, tão permissivas que permitem que você pegue um projeto, altere, se auto-proclame autor do software, feche o source e venda o produto como um produto comercial proprietário.
Podemos ver que software livre é um subconjunto específico dos softwares open-source.



Um mundo livre e open-source


Talvez isso seja apenas utopia, mas sempre é bom alguém dar um primeiro passo. Eu não sou artista, músico etc, então eu posso contribuir apenas com alguns programas feitos por mim e os textos desse blog ;)
Ainda faltam mais obras de arte livres
Filmes livres
Livros livres
Peças teatrais, poesias, quadros, fotos ...
Músicas livres
Teses de doutorado livres
Receitas de bolo livres

Autores e músicos que quiserem publicar livros ou músicas livres, além de estarem contribuindo com esse patrimônio, creio que teriam uma grande aceitação do público, além de divulgação, o que levaria sua carreira a "decolar" mais rápido.

Ainda falta legislação, e para isso, como eu já disse, falta um magistrado ou legislador de renome e influência, que não seja um tapado de preferência, como a maioria dos que eu conheço, publicar um livro opinando sobre a GPL, analisando sua legalidade à luz da remendada e gambiarrada constituição brasileira.
Depois ele entra para o governo, se candidatando a qualquer coisa, e ajuda mais ativamente e mais "perto" na luta contra quem acha que pirataria e liberdade é a mesma coisa.



Quanto à pirataria Vs. Obra original licenciada e paga (e um manifesto pela justiça na comercialização das mesmas)

Quando digo obra me refiro à software, jogo, música, livro, filme, poesia e qualquer outra "obra" intelectual

Primeiro: é um absurdo o que as gravadoras lucram em cima dos artistas e dos fãs, por um trabalho que não é delas. Simplesmente é uma vergonhe hedionda, pagar de 30 a 100 reais em músicas que as vezes não valem a mídia na qual é divulgada.
Mas isso não justifica a pirataria. Acho antes que os artistas deveriam driblar as gravadoras e criar suas próprias gravadoras independentes, para baratear o custo dos seus álbuns. Além disso  o artista realmente bom ganharia mais dinheiro com shows do que com a venda de CDs ou DVDs.

Segundo: Tornar a compra de algo original uma coisa vantajosa e gratificante, recompensadora, para o comprador.
Jogos de videogame e computador eu prefiro e faço questão de comprar originais, assim como software e outras obras. Aprendi isso com o tempo, porém isso só é válido quando é vantajoso comprar o original. Vantajoso para ambos os lados.

Se em um jogo eu simplesmente recebo um DVD com uma cópia do mesmo, que vantagem  o original tem sobre o pirata? Qualidade? Bah! Besteira! A qualidade está no software, não na mídia. E não é quem cria essa qualidade que realmente ganha com isso. Se fosse assim, então compre o pirata.
Agora se um jogo original vem com uma embalagem "da hora", ou adesivos, ou um joystick, ou qualquer outra coisa que me agrade, e ainda permite jogar online com outras pessoas, coisa que boa parte dos jogos piratas não permitem, aí sim eu compraria o jog original.

A mesma coisa para música e filme. Eu não compro simplesmente música para ouvir e filme para assistir, isso tem de graça na internet, obrigado, e é impossível de retirar. Eu compro um pedaço colecionável do acervo de um artista do qual sou fã, então, se eu compro uma marca, porque não vir de brinde uma camiseta, boné, disco de vinil, livro ou qualquer outra coisa que me agrade?

Com software original, alem de suporte, livros e manuais, você tem a garantia de ter com quem reclamar, e de ter suporte por um tempo. É o direito do consumidor em ação, embora para software ele raramente surta efeito.

Jogos originais tem sim uma grande probabilidade de funcionar melhor, simplesmente porque a mídia prensada é de qualidade melhor que as mídias r e rw. Cansei de problemas de leitura e DRE's nos meus discos de Game Cube, no meu Wii, para que isso não acontecesse, só compro originais.

Uma coisa que as gravadoras esquecem é que o pirata não tem valor nenhum para colecionadores, a não ser que seja uma raridade totalemte ausente no mercado e  na internet. Um colecionador sempre vai comprar originais, sejam jogos, musicas, filmes etc...

Porém, parece que existe um certo preconceito das empresas e gravadoras estrangeiras quanto ao Brasil. Digo isso porque enquanto você encontra no exterior produtos com embalagens promocionais, duraveis, bonitas e bem-feitas, no Brasil você encontra a mesma obra, original, nas lojas por aí, em embalagens de plástico, sacos de papelão de quinta categoria e piores.
Você paga mais caro por um produto de "qualidade" inferior e sem nenhum brinde. Paga mais caro porque só de impostos e taxas paga 300% do valor do produto. Mas como no Brasil somos taxados de pirateiros pelas empresas estrangeiras, não temos o direito de adquirir nosso produto com uma embalagem decente, mesmo pagando 300% de seu valor.


Um caso real: 

Grande foi a minha alegria quando eu comprei o Street Fighter 4 original. Jogaço, o melhor de luta dessa década, sem dúvida, e eu ainda poderia jogar online com pessoas ao redor do mundo.
E qual não foi a minha tristeza ao me dar conta que, além de ter pago R$89,00 enquanto os americanos pagam apenas U$15,00 , o DVD veio numa embalagem de plástico pífio, vergonhoso.
E a minha fúria foi tremenda quando descobri que, por morar no Brasil, não poderia entrar na rede xLive para jogar online. Isso porque esta rede não tem suporte no Brasil, isso porque o Brasil é uma merda de covil de piratas e salteadores .... pelo menos essa é a impressão preconceituosa que eles tem da gente.
Enfim, tive que criar uma outra conta no live, com endereço americano, para poder jogar online um jogo que já está cheio de brasileiros jogando.



Gravadoras, editoras, mídia, acordem!

Não será possível, nem com pena de morte, evitar que livros, filmes e músicas se espalhem pela internet na velocidade do vento. Mesmo que a internet seja toda controlada, surgirão redes piratas no submundo da internet, como o são os canais de IRC. Basta uma criptografia para que ninguem saiba  o que está sendo compartilhado.
Mas é incrível que mesmo com todo mundo compartilhando a torto e a direito as gravadoras não ficam pobres. Isso porque quem compraria original caso a pirataria não existisse continuaria comparndo original. E quem compra o pirata porque ele existe, não deixa de comprar o original, porque não o compraria de qualquer forma.
Os piratas fazem um serviço de divulgação gratuito  e eficiente, e as gravadoras ainda reclamam? Tudo bem, exagerei, mas as vezes tenho essa impressão.
Querem ganhar mais dinheiro? Então porque não disponibilizar na internet filmes e seriados em baixa resolução para serem assistidos online ou baixados, e colocar nesses filmes e seriados propagandas da coca-cola, mcDonalds e outros? Porque não cobrar uma taxa para assistir o mesmo produto em alta resolução ainda com propagandas, e uma taxa ainda maior para assistir sem propagandas?
Porque não criar jogos e seriados voltados exclusivamente ao merchandising?
É porque esses dinossauros são admininstrados por velhos ignorantes que não sabem diferenciar a sua esquerda da sua direita, não enxergam um palmo na frente do nariz e não sabem ou não entendem nada sobre a nossa nova era digital, a era da informação e outros tantos clichês idiotas da mídia.
Não entendem suficientemente de internet para saber lucrar com ela.

A mídia da forma como a conecemos morreu com o advento da internet. A Internet é a nova televisão, porém uma televisão livre, sem as putarias, roubalheiras e hediondices de "Redes Globos" emporcalhadas com os fucinhos na mesma lama que políticos corruptos, tendo sido colocadas lá por ditadores de passados distantes.
A televisão e o radio morreram, assim como o jornal, mas desapareceram? Não, se adaptaram e continuam existindo, porque ainda tem e sempre terá mercado para eles. Sempre terá mercado para livros e jornais de papel, para quem gosta do cheiro e a textura do papel, para quem gosta de ler na praia sem perigo da areia, água ou maresia estragar seu kindle, ou ler no metrô, sem medo de ter seu gadget "esmagado" no brás.



Foi um prazer escrever sobre esse assunto, que gera tantas discussões e tantos falatórios vãos. Mais links para você ficar indignado:

http://br-linux.org/2010/mais-sobre-o-posicionamento-da-iipa-sobre-codigo-aberto-na-legislacao-brasileira/
http://br-linux.org/2010/associacao-antipirataria-dos-eua-poe-brasil-em-observacao-e-emite-recomendacoes/
http://info.abril.com.br/noticias/ti/brasil-pode-ser-punido-por-software-livre-26022010-31.shl
http://news.cnet.com/Bill-Gates-and-other-communists/2010-1071_3-5576230.html
e a tradução
http://www.linuxnarede.com.br/news/fullnews.php?id=607

Espero que depois dessas cacas legais mais pessoas tomem seu lado e abracem essa idéia.

Comentários

  1. Eu já entrei em discussão com alguns colegas por causa do assunto, mas minha opinião é a seguinte:

    Hoje, muitas pessoas pagam suas contas e alimentam seus filhos com empregos simples, em empresas simples ganhando salários simples, e geralmente, essas empresas utilizam software proprietário e pirata.

    O governo não incentiva o uso de software livre, não cria escolas, não investe... Mas é muito rígido em fechar portas de empresas que utilizam software pirata, eu já presenciei isso...

    Hoje você entra num curso profissionalizante aprender uma profissão, e você não tem escolha, você irá aprender tudo em softwares proprietários.

    Se a idéia é gerar emprego, legalizar e tudo mais, o governo deveria investir mais em software livre.

    Em minha área, o software é apenas uma ferramenta, que entra em segundo plano, pois na área do design, o profissional pensa projeto, na área de ilustração ou arte, é possível faze-la com um lápis ou pedaço de carvão.

    Utilizo softwares proprietários e softwares livres, também não sou xiita ao ponto de defender somente um lado.

    Acho que o software livre pode ajudar muitas pessoas a terem suas empresas de maneira legal, e com isso gerar empregos e contribuir para uma melhor sociedade, o Brasil ainda tem aquele pensamento preconceituoso de "é grátis, é ruim" (isso porque a maioria dos softwares livres são grátis).

    ResponderExcluir
  2. Muito bom o seu texto, espero que você seja um dos que possam levar o nosso país tupininiquim a uma nova era, onde talvez exportemos mais software do que importemos, e de um modo totalmente diferente do Tio Sam, com a generosidade que só o brasileiro têm

    Parabéns.

    ResponderExcluir

Postar um comentário

Postagens mais visitadas deste blog

Busca de CEP com o Lazarus - Parte 1 - UrlEncode

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

Uso de memória no SQL Server