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

Organização da informação, favoritos, aaaaargh

As vezes acho que preciso contratar um biblioteconomista para organizar minhas anotações e favoritos.

Eu encaro meu computador como uma extensão de meu próprio cérebro, pois nele há anotações que envolve tanto meu aprendizado profissional como os games que tanto gosto.

Isso quer dizer que meu cérebro é um verdadeiro pandemônio, a julgar pela baderna que é meu pc.

Agora há pouco encontrei umas raridades no meio dos favoritos, além daqueles sites já fora do ar, claro. Dentre as raridades encontradas destaca-se o método delphi (http://www.clovis.massaud.nom.br/prospec.htm).

Trata-se de um método de pesquisa / debate / brainstorm, e o link é um tipo de descrição / livro sobre o Método Delphi.

Acho que eu fiz um trabalho sobre isso na faculdade.... depois de tanto tempo encontrei esse link nos meus favoritos de Delphi...

Eu acho que eu coloquei lá um dia enquanto organizava os meus favoritos. Parei pra pensar... nem o google conseguiria colocar ordem nessa caixa de pandora.

Organizar os arquivos dentro do computador, e por exetensão os favoritos pode ser uma tarefa de taxonomia, complicadíssima.

Mais um exemplo de um "problema" que foi criado por uma "solução". Já me disseram que a Informática/TI/Ciência da computação (seja lá como for que você a chame)  é a melhor ciência para resolver os problemas criados por ela mesma. Uma triste verdade que assola as mentes incorrigivelmente curiosas como as nossas.

Uma simples solução sem um problema gera um problema sem solução ...

Enfim... apaguei tudo, certas coisas é melhor começar do zero. Sempre guardamos informações que nunca vamos ler achando que um dia vamos precisar e acabamos criando 2 tarefas auto-impostas a nós mesmos, e duas dores de cabeça: ler a informação e organizar a informação.

Uma dica, que eu já vi fazerem e vou começar a fazer: organizar os seus favoritos no seu blog. Eles ficam assim com ordem de relevancia baseada no tempo, tagueados, indexados e explicados. Pra  que manter isso no computador sincronizado com xmarks, delicious e por aí vai se o google sempre vai estar lá e sempre vai achar a informação quando não precisarmos? Se você não leu ou não usou a informação, site, livro, apostila ou objeto em tanto tempo significa que já era inútil desde o começo.

Se livrar da montoeira de lixo virtual pode trazer uma sensação de alívio, como arrumar a própria casa. (Estaria eu louco, doente?)

Parece que o problema está na maneira como organizamos a informação hoje em dia. Essa coisa hierárquica de árvores, diretórios, pais, filhos, categorias, subcategorias ...

Isso forma um modelo unidimensional ou bidimensional  da organização da informação, mas esse modelo não é realista. Faltam aí as relações entrecortantes entre as informações, a terceira dimensão.

Quem sabe com inteligencia artificial, semântica e uma computação realmente ubíqua, em nuvem, mas distibuída isso não se resolva? Coloco o "realmente" aqui porque o conceito de computação em nuvem que temos hoje, de tudo ficar nos servidores da web e o seu computador ser apenas um browser eu não considero um avanço, e sim um retrocesso, porque  o poder de armazenamento e processamento das estações é desperdiçado. Parece que estamos voltando à era dos terminais burros.

Comentários

  1. O raciocinio estava perfeitinho até vir com 'se o google vai estar sempre lá'.

    Não dá para ficar tranquilo rifando a demanda biblioteconomista-arquivista para uma empresa privada, ainda por cima, estrangeira.

    A questao é estrategica, segurança, consistencia e uso dos seus dados.
    Não vou confiar isso a um sistema que não seja aberto, livre, de preferencia governamental, trusted network, o que se ve é uma empresa tomando o papel do Estado de oferecer estrutura digital de informação e se apropriar da base de dados para seus fins e imperdir de ter amplo acesso aos recursos que vc mesmo gerou, de maneira completa, como por exemplo para fazer integraçao com outro site.
    A google não permite, ela nao tem RSS out, ela se apodera da fonte, embora RSS out seja muito pouco isso ja me exclui a possibilidade de confiar em googles.

    A estrutura será descentralizada com redundancia e mantida por entidade de lastro, tipo ONU, agencias, universidades, com servidores espalhados por diversos paises, informaçoes publicas e rede confiavel, do jeito que deveria ser caso o Estado nao estivesse atrasado na questao cibernetica.
    Neste receptaculo estará a inteligencia coletiva gerada das redes de compartilhamento e trabalho. As bibliotecas publicas de midia.

    A biblioteca particular, vai ficar num dispositivo alheio ao computador, mas que pode se conectar a este por vias locais (por meio de conectores usb), ou por vias remotas (esse hardware-biblioteca na verdade é um fileserver-router wi-fi com possibilidade de espelhamento/load balance, tambem tanto local, como remotamente. Isso já existe, a diferença é que serão dispositivos de bolso que podem servir tanto um computador local (via usb), como servir uma rede de arquivos (por meio do NG, onde N bem maior que 3, no caso do 3g isso ainda é pouco viavel, mas quando estivermos com banda larga no nivel de '9g' por exemplo (conexoes de 3Mb), ficará bem propicia a implementaçao até dessa redundancia entre fileservers-routes que estao em bolsos da calça jeans de diferentes cidadãos.

    Neste ponto biblioteca publica e biblioteca padrao se confundem, na verdade ha a convergencia e tudo passa a ser uma coisa só, é o equilibrio entre o dado estar com voce, ou nao estar, é o empate no acesso na banda larga em relação ao acesso local, nao faz sentido falar em dois tipos de biblioteca mas viemos de um modelo radicalmente opostos, que é o de salvar o arquivo localmente e depois providenciar o upload. Agora essas coisas sao da natureza de um copiar/mover, e isso faz com que pouco importe onde esteja o recurso, na verdade a coisa é extremamente pragmatica, o recurso mais utilizado será o que comporá o cache do tôdo, ou seja, o conteudo que tu armazena em dispositivo é aquele que tu mais se utilizou até o limite de armazenamento daquele recurso, deixando o restante para as suas ilhas remotas de conteudo, que agora sao tao proximas e rapidas quanto um diretorio adicional no teu recurso local.

    ResponderExcluir
  2. Estando a biblioteca bem definida. Surge o modo de organização. A Tagsonomia nao é um modo de organização exclusivo, entao ela por si só ja se garante e sempre vai existir e ser util em termos de tornar mais densa essa nuvem, o que dará ubiquidade a essa nuvem será a inteligencia artificial.

    Mas enquanto nao ha inteligencia artificial aplicada, vamos de inteligencia natural mesmo.
    E nesse caso uma maneira fantastica de organização é o bom e velho Banco de Dados relacional e a sua orientação a objeto.

    Cria-se uma estrutura em tabelas, um diagrama de classes simples que defina um filesystem e as caracteristicas pertinentes aos seus objetos (arquivo/recurso).

    Cria-se uma interface de usuario, GUI, que pode ser a boa e velha imagem da Teoria dos Conjuntos: Espaço Universo, Conjuntos em forma de circulo, e conjuntos que podem ser drag-dropeados uns sobre os outros criando areas de intersecção, de acordo com a propriedade do objeto.

    Então é um espaço vetorial de Rn com n propriedades de objeto , onde em cada uma dessas dimensoes ha um hiperplano de conjuntos (que sao os diretorios, mas nao diretorios simples do sistema de arquivo convencionais, agora eles sao diretorios/conjuntos, que possuem nao apenas as carateristicas de conter ou estar contido, mas tambem as de intersecção, o que permite atrelar a tagsonomia à taxonomia, por meio de um simples query SQL).

    Assim, se eu tenho os arquivos:
    (Nome: Cajuina;Autor:CaetanoVeloso;Ano:1977;)
    (Nome: Flor da Pele;Autor:CaetanoeChico;Ano:1973;)
    (Nome: Construção;Autor:ChicoBuarque;Ano:1964;)

    eu tenho um espaço R³, e em cada R há um universo de conjuntos de propriedades.

    Na dimensao da Propriedade Nome e Ano, é possivel enchergar que sao arquivos que estarão em 'pastas/propriedades' diferentes no seu 'gerenciador de arquivos'. São 3 arquivos/objetos, cada qual em uma pasta diferente.
    Na dimensao da Propriedade Autor, temos apenas 2 'pastas/propriedades', e na pasta/propriedade de Caetano estarão 2 objetos, e na pasta/propriedade de Chico, tambem, sendo que a musica que eles fizeram juntos estará aparentemente replicada nas duas pastas (se a visualizaçao for convencional) ou simplesmente as pastas se sobrepoem (por isso a sugestão do circulo e demais objetos basicos para facilitar a composiçao das intersecções entre conjuntos).
    E voce coloca o objeto que partilha da mesma propriedade, na area hachurada correspondente.
    Claro que voce pode fazer isso tambem via uma query SQL, a estrutura relacional ja está preparada para abarcar a Teoria dos Conjuntos de um modo que se for expandido para muitas dimensoes de propriedades do objeto, voce tem seja via linha de comando, seja via um gerenciador de arquivos em forma de conjuntos matematicos, um sistema plenamente ubiquo.

    Abraço
    Fernando J Capeletto - @fjcapeletto

    ResponderExcluir
  3. Fernando, obrigado pelo seu feedback. Aliás você escreve muito bem!

    Na verdade esse post não era um artigo, mas um simples "Desabafo" meu.

    Aqui estamos tratando de dois assuntos distintos: A responsabilidade sobre a infra-estrutura de computação / processamento / armazenagem de dados e sobre as estruturas de
    dados em si necessárias para organizar o conteúdo armazenado na estrutura acima.

    Esses dois assuntos vão gerar bastante conversa, talvez até poderíamos entrar em um fórum a respeito para discutir o assunto.

    Concordo plenamente com você no que diz respeito a colocar poder demais na mão do google ou de qualquer empresa privada.

    Concordo também que o grande mantenedor de uma infra-estrutura para se armazenar dados tenha que ser livre, livre de código, livre de Royalties e mantida por organizações,
    ongs, associações e fundações. Mas discordo completamente do que você mencionou sobre colocar essa responsabilidade na mão do governo, do Estado, da ONU ou de qualquer orgão
    governamental, por vários motivos, listados abaixo:

    1) Há um histórico, no mundo inteiro, com inúmeros exemplos que prova que toda essa informação na mão do Estado é tão perigosa quanto na mão da iniciativa privada. Essa informação
    pode aumentar o poder de controle do Estado sobre o indivíduo, como temos visto acontecer nas diversas ditaduras, as que já são passsado e as presentes: Brasil, China, Coréia do Sul,
    e assim por diante. As consequencias disso podem ser vetos à liberdade de expressão, de imprensa, vetos à liberdade religiosa e assim por diante. As leis aprovadas recentemente pelo
    nosso presidente são prova desse perigo.

    2) O Estado é ineficiente e desqualificado para cuidar desse assunto.

    3) O Estado é lento, e o modelo de "Governo" que o mundo conhece hoje já não suporta mais a velocidade da mudança, mudança da informação, da opinião, de tudo.

    4) O que mais faz a ONU além de fomentar mais guerra? Não digo que a ONU é a causa dos problemas internacionais, mas com certeza tem pouco poder em mãos para resolvê-los, se é que
    tem realmente intenção para tal.

    Quanto ao google se apoderar da informação em si, repare no contexto que eu mencionei que a informação, (seja ela um link para um site,
    seja um artigo e blog ou um artigo acadêmico) não é armazenada pelo google (bem, no caso do blogspot talvez seja, mas isso não vem ao caso), a informação é "indexada" e
    "procurada" pelo google. A informação poderia estar em qualquer repositório livre e público, privado, pessoal, num servidor na internet, numa resposta de forum num site ou num celular,
    não importa. Se a informação for pública ou for compartilhada pelo seu autor ela deve poder ser encontrada e indexada.

    Apenas citei o google como se cita "gillette" para lâmina de barbear, ou "nescau" para qualquer achocolatado. Para indexação da informação poderia ser o Google, Bing, Yahoo ou
    qualquer outro ou até nenhum. Se a informação estiver lá, de alguma forma ela será achada. Mesmo assim, se o google se apoderar de minha informação é porque eu permiti isso.

    (continua...)

    ResponderExcluir
  4. Repare que citei apenas empresas privadas de indexação e procura porque não conheço nenhuma Estatal, nenhuma ong, fundação ou coisa do gênero para indexar a informação. E tanto
    para armazenar informaçao em si quanto para a sua indexação, em quem mais você poderia confiar? Microsoft? Embora o google tenha tanta sede de lucro quanto a Microsoft e
    não seja nem um pouco "bonzinho", temos que admitir que em boa parte dos projetos o Google foi "um pouco mais transparente, mais ético".

    É óbvio que poder demais na mão de empresas privadas pode gerar um grande poder paralelo, talvez mais forte do que o próprio Estado, e que esse poder pode manipular e escravizar os indivíduos.
    Porém, uma vez que somos escravos de qualquer jeito, a única liberdade que temos é de escolher nosso "Amo". Não sei o que é pior, se é o Estado ou as empresas privadas, mas não podemos negar que
    a iniciativa privada faz muita coisa hoje que era obrigação do governo, só que à maneira deles..... ¬¬
    Sou um partidário da filosofia de que a informação é patrimônio cultural da humanidade, que deve ser livre a todos e tal. Mas isso é tão utópico como o socialismo.

    ResponderExcluir
  5. Agora falando sobre as maneiras de se organizar a informação:
    Achei muito interessante a sua idéia de uma GUI para simular um Shell e um sistema de arquivos em um banco de dados relacional e adicionar as intersecções às informações que já temos de
    Conter/Estar Contido, mesclando assim a tagsonomia à taxonomia. Acho que até existem sistemas que façam isso, mas não é só isso que eu estava falando.

    Enquanto a Taxonomia (hierárquica como a arvore de diretórios ) é a primeira "dimensão" desse modelo, e a Tagsonomia é a segunda "dimensão", falta ainda uma terceira dimensão que
    seria o tempo. Controle de versionamento. Imagine que num sistema de arquivos todo e qualquer arquivo ou diretorio fosse versionado como se estivesse no SVN ou GIT, assim poderiamos
    voltar ou avançar na linha do tempo de modificação de um arquivo. Os unicos arquivos que editamos são os nossos mesmo, de nossa autoria, porque musicas, videos e outros binários raramente sofrem modificações,
    então espaço não seria um problema.

    Uma "quarta" dimensão seria poder classificar, hierarquicamente (Taxonomia), não apenas baseado nas relações de paternidade de diretório, mas por multiplos modelos hierárquicos de organização.
    Seria um modo de alterar essa parte de "quem pertence a / contem quem".

    Isso demanda uma alteração cultural. Embora o modelo relacional compense as deficiências do modelo hierárquico, os sistemas de arquivos ainda são hierárquicos.
    Além disso, o modelo relacional hoje em dia está sendo revisto, porque como os paradigmas de análise e desenvolvimento estão mudando,
    o modelo relacional não supre todas as necessidades, e sempre somos obrigados a fazer um mapeamento objeto-relacional
    para criar nossas classes de persistência, ou framework de DAO.
    Repare que isso do ponto de vista da POO é aceitável, mas do ponto de vista da Análise OO é inaceitável, uma vez que os autores
    de livros sobre análise OO costumam dizer que as classes devem mapear objetos da vida real e não devem ser criadas classes artificiais.
    Um objeto DAO é um objeto artificial, uma vez que no mundo
    real não existe essa preocupação de como certos objetos ou informações vão ser armazenadas.

    Por sua vez a propria orientação a objeto está ficando desatualizada, porque o modelo de herança única (apenas certas linguagens implementam herança múltipla) e a hierarquia de classes
    impõe uma descendencia, uma relação do tipo "é um" aos objetos, que também é Taxonomia (hierarquia, uma dimensão). Estamos falando aqui dos próprios metadados, classes etc, não dos dados propriamente ditos.

    A programação orientada a aspectos e outras "novidades" podem resolver essa questão e introduzir pelo menos a segunda dimensão à esse modelo.

    Só que teremos sempre esse delay: O sistema de arquivos é arcaico, hierárquico, o banco de dados é relacional e o paradigma de desenvolvimento está começando a "aflorar" em sua
    forma 3d. Será que nivelaremos isso ainda nessa década?

    Vitor Luiz Rubio

    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