terça-feira, 12 de março de 2013

Genexus dos Sonhos - Parte II

Genexus não é uma ferramenta perfeita, há um esforço imenso para torná-la excelente, isso não podemos negar, pois a equipe Artech realiza um grande trabalho na sua construção e evolução, temos observado isso, mas ainda fica uma sensação que poderia ser melhor em alguns 'pequenos' detalhes.

O que podemos, como mero usuários que convivem diariamente com a ferramenta, é sugerir melhorias nos pontos em que consideramos não apenas relevantes, mas também que nos incomodam.  Assim como no post anterior (Genexus dos Sonhos), refletimos aqui aquilo que consideramos importante para serem implantados na Tilo, e novamente expressamos que esses pontos não são criticas mas contribuições para buscarmos uma maior excelência.

  1. Ponto-e-Virgula:
    Esse detalhe afeta os iniciantes e veteranos em GeneXus, pois não sabemos se devemos ou não colocar esse caracter no final dos comandos, acabamos decorando os locais onde ocorre ou nâo, mas creio que isso fere a filosofia da ferramenta simples.  Por exemplo, nas propriedades de Grid condition, order, precisa-se obrigatoriamente colocar, assim como nas Rules, por outro lado em Events se colocarmos ocorrem erros. Leva muito tempo até pegar o jeito, isso poderia ser simplificado, ponto-e-virgula em tudo é a melhor solução, ou em nenhum lugar.
     
  2. Replace All (All):
    Já que a grande meta que é a redução do trabalho dos desenvolvedores, que tal se tivessemos um Replace All que fosse aplicado não apenas ao objeto corrente mas a todos os objetos que tivessem um certo HTML ou linha de codigo que temos que modificar. Um Replace All in All Objects seria ótimo hein!  Qualquer ferramenta de 'programação' voltada para programadores inclui um recurso assim, ou muitas operações possiveis de Replace ou Find, GeneXus ta meio pobrinha nesse ponto.
     
  3. Full-Text-Search livre:
    Atualmente para incluirmos uma regra na ferramenta Full-Text-Search devemos selecionar em um ComboBox as properties dos objetos, que tal se fosse um texto livre, sem esse combo.  Tente achar ali a propriedade Class, não existe.  Justo esta que utilizamos com muita frequencia em nossos objetos.  Melhor seria deixar um campo texto de pesquisa (e outro de replace?)
     
  4. Data Provider:
    A programação não aceita comandos de controle na forma tradicional como for...to, do case, ..., ou mesmo operações aritméticas padrões como +=, *=, que tal se tivessemos uma aproximação maior com a forma de programação das procedures?
     
  5. Fórmulas Locais:
    Não podemos incluir uma fórmula local em qualquer lugar, mas apenas no inicio de blocos, era previsto que poderiamos escrever essas fórmulas em qualquer lugar, mas isso infelizmente não evoluiu.
     
  6. Objeto Módulo:Atualmente a Artech iniciou a montagem desse novo objeto para os projetos grandes em Genexus, o caminho está correto, apenas precisariamos lapidar alguns pontinhos:
    a) Não permitir que desenvolvedores abram módulos que não possua acesso, nem mesmo o visualize na árvore de objetos
    b) Export All limitado aos objetos que o mesmo tenha acesso
     
  7. Theme 1:
    Que tal se pudessemos exportar não apenas o objeto Theme, mas classes individuais nesse objeto para importarmos em outros Themes. Na EV1 não dá pra fazer nenhum tipo de importação, a inclusão tem que ser manual mesmo, fato que complica demais a nossa vida. Na EV2 até temos como importar classes, a partir de um arquivo externo, mas temos que manipular esse objeto externo.
     
  8. Theme 2 - Search & Replace:
    Que tal ter um Search para encontrar temas nesse objeto, ou propriedades definidas nos temas.  Se quisermos modificar algum tema temos que ficar abrindo todas as abas para encontrar onde a mesma está alocada.
      
  9. Controles Distintos: Esse é uma reprodução do nosso anseio no post anterior. A idéia é permitir que o Gx gere controles (Edit, Dynamic Combo, ...) distintos para um mesmo atributo, dependendo do local onde o mesmo é incluído: Isso de certa forma já acontece hoje, quando se define o tipo EDIT com Description na estrutura da transação (Ver POST Anterior), mas seria interessante expandir um pouco mais esse recurso, com novas propriedades na estrutura da transação para se definir o tipo de controle a ser gerado nas situações:
    • O atributo chave primária em sua transação original: EDIT
    • O mesmo atributo como chave estrangeira em outra transação: EDIT com Description, Dynamic List Box ou Dynamic Combo Box,...
    • O mesmo atributo como chave estrangeira em um GRID: EDIT com Description, Dynamic List Box ou Dynamic Combo Box,...
  10. Atualmente temos várias propriedades para designar tipos distintos de titulos (Title, Contextual Title, Column Title), que tal expandir esse mesmo mecanismo para se definir tipos de controles.
Observe que temos ai um monte de perfumarias, ou seja Genexus é muito bom, precisa apenas cheirar um poquinho melhor, hehehe....