Diretrizes: Interface
Tópicos
- Nomeie a interface a fim de refletir o papel que ela desempenha no sistema.
- O nome deve ser curto, com uma ou duas palavras.
- Não inclua a palavra "interface" no nome;
isso já está implícito pelo tipo de elemento do modelo (por exemplo interface)
- A descrição deve indicar as responsabilidades da interface.
- A descrição deve conter várias frases, formando no máximo um parágrafo curto.
- A descrição não deve apenas reafirmar o nome da interface, mas sim esclarecer o papel que ela desempenha no sistema.
- Os nomes de operação devem refletir o resultado da operação.
- Quando uma operação define ou obtém
informações, incluir set ou get no
nome da operação é redundante. Atribua à operação o mesmo nome da propriedade do elemento do modelo que está sendo definido ou recuperado.
Uma operação
nomeada desta forma, sem parâmetros, recupera a propriedade; uma operação
nomeada desta forma, com um parâmetro define
a propriedade.
Exemplo
name() retorna o nome do objeto; name(aString)
define o nome do objeto para aString.
- A descrição da operação deve descrever o que a
operação faz, incluindo os principais algoritmos, e o valor que
ela retorna.
- Nomeie os parâmetros da operação para que indiquem as informações que estão sendo transmitidas para ela.
- Identifique o tipo do parâmetro.
O comportamento definido pela Interface é especificado como um conjunto de Operações.
Talvez seja necessário fornecer informações adicionais:
- Como as operações são usadas e a ordem de execução correspondente (mostrada por diagramas de seqüência de exemplo).
- Os possíveis estados observáveis externamente nos quais pode estar o elemento do modelo que realiza
a interface (ilustrados por uma máquina de estado, consulte Diretrizes:
Diagrama de Estados).
- Planos de teste e scripts que testam o comportamento de qualquer elemento do modelo que realize a interface.
Para agrupar e gerenciar essas informações, é necessário criar um pacote para conter a interface e todos os artefatos relacionados.
Toda interface representa uma 'junção' no sistema: um local no qual o sistema
pode ser "separado" e reconstruído ou reprojetado. As interfaces representam a separação da especificação do design ou da implementação.
As interfaces bem estruturadas:
- são simples mas completas, fornecendo todas as operações necessárias mas suficientes para especificar um único serviço
- são compreensíveis, fornecendo informações suficientes para usar e realizar a interface sem que seja necessário examinar um uso ou uma implementação existente
- são acessíveis, fornecendo informações que orientam o usuário para as principais propriedades sem importuná-los com os detalhes das operações
Ao projetar uma interface,
- utilize a notação "pirulito" sempre que precisar simplesmente especificar
a presença de uma junção no sistema. Na maioria das vezes, isso será necessário para subsistemas,
não para classes.
- Utilize a notação "classe" quando precisar apresentar os
detalhes do próprio serviço. Na maioria das vezes, isso será usado para especificar os serviços oferecidos por um pacote ou um subsistema.
| |
|