6. Testemunho



O desenvolvimento deste programa trouxe-nos várias lições importantes.
A primeira é que se existe algo que se pode fazer com funções da Standard Library então se criarmos nós próprios classes/funções com o mesmo objectivo será quase impossível igualar a performance das da Library. Portanto a primeira lição foi:
"Se tens algo que a Standard Library pode fazer por ti, ela não só te irá poupar trabalho como também irá fazer isso mesmo muito mais eficientemente do que tu."

Para além de termos assimilado uma série de conhecimentos novos sobre herança e polimorfismo aprendemos uma boa quantidade de coisas relacionadas com sistemas de optimização. Por exemplo apercebemo-nos de que para um array de objectos que ocupem mais de 4 bytes (o tamanho de um apontador) será bastante vantajoso utilizar um array de apontadores (Type** items), permitindo assim um Grow() mais rápido (evitando copiar objectos, copiando apenas apontadores) e até uma maior facilidade de adaptação para um vector polimórfico. Outras observações relacionadas com o mesmo tema encontram-se espalhadas um pouco por todo o programa, sob a forma de comentários (como por exemplo os que se encontram na StringBasic), e que descrevem grande parte dos nossos raciocinios (e logo o que fomos apreendendo) durante a realização do programa.

Em termos de reutilização de classes e funções deste programa, temos todo um sistema de busca de vários elementos no mesmo texto criando e optimizado.
Portanto em vez de utilizar um sistema de busca "linear" para cada um dos elementos utilizamos este sistema mais rápido e com as mesmas capacidades (Testemunho 1).
Contudo a classe StringSearchable dever-se-á demonstrar bastante boa a resolver problemas como a busca de uma só palavra num texto (Testemunho 2).
Com uma pequena alteração ao Testemunho 1, por exemplo generalizar a classe SportAgents para uma classe Person ou até Entity (a pensar no caso de plantas, casacos, no fundo tudo o que tenha nome) temos algo de bastante util mesmo.