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