Access Keys:
Skip to content (Access Key - 0)

Cette page présente une série de recommandations assez générales relatives à la conception.

Ceci est un ensemble de recommandations d'implémentations qui peuvent s'appliquer dans des cas généraux. Cela ne vous empêche pas d'aller à l'encontre de ces règles et à réfléchir à votre cas qui peut être particulier.

Généralités

instanceof or not instanceof

  • Il est souvent préférable d'utiliser le polymorphisme plutôt que l'instruction instanceof. Cela rend le code moins rigide et plus extensible. En plus, le code en sera que plus explicite. Je pense qu'il faut toujours se poser la question lorsque l'on utilise instanceof. Ne devrais-je pas faire un refactoring et passer par le polymorphisme pour éviter cela ? Parfois, ce travail peut aussi s'avérer lourd par rapport au gain qu'il apporte, il faut alors peser le pour du contre.
  • Dans certains cas, se passer du mot clé instanceof sera trop compliqué, voire impossible.

equals

  • La méthode equals d'une class doit être implémentée lorsque 2 objets de cette classe peuvent être considérés comme logiquement identiques.
  • Pour implémenter la méthode equals, il faut suivre les règles suivantes :
    • Vérifier la comparaison avec this
    • Comparer les attributs pertinents par rapport à votre comparaison logique
    • Appeler super.equals() lorsqu'une classe de base autre que Object implémente la méthode equals
    • Choisir d'utiliser :
      • getClass() : c'est le cas le plus courant qui vous permettra de comparer des objets de classe identique)
      • ou d'utiliser instanceof pour implémenter equals() et comparer des objets de classes dérivées. Cela peut engendrer des complications provoquant des relations d'égalité non symétriques si la classe de base et la classe dérivée implémentent un méthode equals().

Performances

Utiliser System.arrayCopy() pour copier des tableaux

  • Cette méthode est très performante car elle est implémentée comme une méthode native.

Utiliser des tableaux d'objets plutôt que des Vector ou ArrayList

  • Si vous n'avez pas réellement besoin des fonctionnalités d'une List et si vous voulez améliorer les performances, utiliser plutôt un tableau d'objets. Si vous n'avez pas besoin de synchronisation, n'utilisez pas de Vector mais un ArrayList.

Réutiliser les objets.

  • Il est souvent plus économique de réutiliser un objet existant plutôt que d'en créer un nouveau.

Interfaces, classes abstraites et classes

TODO

Adaptavist Theme Builder (4.2.3) Powered by Atlassian Confluence 3.5.5, the Enterprise Wiki