Histórico / Cenário
Comecei a escrever um aplicativo CLI puramente em C (meu primeiro programa C ou C ++ adequado que não era "Hello World" ou uma variação dele). No meio do caminho, eu estava trabalhando com "strings" de entrada do usuário (matrizes de caracteres) e descobri o objeto streamer de strings C ++. Vi que podia salvar código usando esses, então usei-os através do aplicativo. Isso significa que alterei a extensão do arquivo para .cpp e agora compile o aplicativo em g++
vez de gcc
. Portanto, com base nisso, eu diria que o aplicativo agora é tecnicamente um aplicativo C ++ (embora mais de 90% do código esteja escrito no que eu chamaria de C, pois há muito cruzamento entre os dois idiomas, dada minha experiência limitada em os dois). É um único arquivo .cpp com cerca de 900 linhas.
Fatores Importantes
Quero que o programa seja gratuito (como em dinheiro), livremente distribuível e utilizável para todos. Minha preocupação é que alguém olhe o código e pense algo com o efeito de:
Oh, olhe a codificação, é horrível, este programa não pode me ajudar
Quando potencialmente poderia! Outra questão é o código ser eficiente (é um programa para testar a conectividade Ethernet). Não deve haver partes do código que sejam tão ineficientes que possam prejudicar gravemente o desempenho do aplicativo ou sua saída. No entanto, acho que essa é uma pergunta para o Stack Overflow ao pedir ajuda com funções, métodos, chamadas de objetos, etc.
Minha pergunta
Tendo (na minha opinião) misturado C e C ++ onde talvez eu não devesse. Devo procurar reescrever tudo em C ++ (com isso, quero dizer implementar mais objetos e métodos C ++, onde talvez eu tenha codificado algo em um estilo C que possa ser condensado usando técnicas mais recentes de C ++) ou remover o uso de objetos de streamer de string e trazer tudo "de volta" ao código C? Existe uma abordagem correta aqui? Estou perdido e preciso de algumas orientações sobre como manter esta aplicação "Bom" aos olhos das massas, para que elas a usem e se beneficiem.
O Código - Atualização
Aqui está um link para o código. São cerca de 40% dos comentários, comento quase todas as linhas até me sentir mais fluente. Na cópia a que vinculei, removi praticamente todos os comentários. Espero que isso não dificulte a leitura. Espero, porém, que ninguém precise compreendê-lo completamente. Se eu cometi falhas fatais de design, espero que sejam identificáveis facilmente. Devo também mencionar, estou escrevendo alguns desktops e laptops Ubuntu. Não pretendo portar o código para outros sistemas operacionais.
LICENSE
arquivo. Você pode obter um feedback interessante.