Ao usar o gerador de stubs do XCode notei que ele inseriu o método == com um acessor estático, ao pesquisar na documentação da apple notei que se recomenda a mesma prática
To customize your type’s Equatable conformance, to adopt Equatable in a type that doesn’t meet the criteria listed above, or to extend an existing type to conform to Equatable, implement the equal-to operator (==) as a static method of your type.[...]
Colocar ele fora da classe neste caso não seria uma prática ruim?
Outro ponto citado pela documentação é que seria boa prática usar Equatable
no sentido literal de substituição, onde um elemento que é igual ao outro poderia substituir ele em qualquer parte do código.
Equality implies substitutability—any two instances that compare equally can be used interchangeably in any code that depends on their values.[...]
e
[...]any of your custom types that conform to Equatable must satisfy three conditions, for any values a, b, and c:
- a == a is always true (Reflexivity)
- a == b implies b == a (Symmetry)
- a == b and b == c implies a == c (Transitivity)[...]
Seria interessante reforçar que o principio da equidade não deveria ser usado para testar apenas um ou outro atributo, mas sim todos os atributos que não sejam diretamente ligados a identidade (no sentido de identidade do sistema (ex. ponteiro de referência))