2020-04-12 – Knowledge Tester com Vídeo, com Calculadora de IPV4 em C++
Uma imagem que tinha partilhado em 12 de Abril. Nessa altura andava a desenvolve um sistema de menus fácil de usar para a aplicação.
Para quem quiser ver a evolução até inícios de Junho, fica o vídeo:
Descrição da partilha da altura, abaixo:
«2020-04-12 – Hoje preparação dos menus. O que vêem é a criação de uma rotina de conversão de menus definidos em texto, para menus reais definidos pelo programa, para separar a lógica da configuração. Assim, definimos por texto sem mexer no código.
Neste caso temos os menus hierarquizados de forma a poderem ser usados universalmente independentemente se estivermos a falar de Windows ou Linux, Linux GUI ou Terminal, etc. Podem ver que alguns sub-menus têm opções e outros sub-menus, etc, com recursividade infinita.
Depois vem a segunda parte que não está visível aqui, que é a conversão destes dados hierarquizados que vêem para objectos (Object Oriented Programming), eu não uso OOP sempre, só quando é necessário, aliás C++ é mesmo assim, usamos o que quisermos, e neste caso OOP dá jeito, cada opção do menu ou sub-menu será um objecto próprio.
Essa parte fará ainda parte da lógica transversal do programa, e depois haverá uma outra layer que é a aplicação dessa configuração toda para o terminal, ou para a GUI, etc, essa parte já depende se estivermos a criar um menu numa GUI ou num terminal.
Eu tinha código reutilizável antes que nem sei onde anda, estou agora a fazer tudo do zero em C++ versão 17, e em breve C++ 20 quando os compiladores o disponibilizarem, por exemplo em C++ 17 já posso usar nested inline namespaces, etc. Em C++20 poderei usar ainda mais coisas.
Assim fico com código reutilizável e já tirando proveito dos mais recentes compiladores.
Escusado será dizer que o tempo que perco nesta aplicação será menor na próxima, pois o código que crio aqui será usado depois nas outras, e assim a 2ª aplicação levará menos tempo a criar, a 3ª ainda menos, a 4ª ainda menos, etc.
Evito usar pointers para não complicar o código e evitar ter possíveis crashes se alguém alterar, é para ser Open Source, mas não me preocupo demasiado se irão compreender o código ou não. Faço um esforço para estar tudo documentado e compreensível, evito ternary operators, pointers, etc, para ser o mais simples possível, mas não perderei a minha identidade, será sempre algo feito por mim, e quem quiser entrar no barco depois terá de compreender, se quiser entrar.
Mais umas horitas de uma noite, de Páscoa neste caso. :P»