[JAVA] Point 51: Concevoir soigneusement les signatures de méthode
51. Concevoir avec soin la signature de la méthode
- Les noms de méthodes doivent être choisis avec soin. Il doit être facile à comprendre et cohérent avec les autres noms du package. Donnez également un nom qui est largement et généralement accepté. En cas de doute, jetez un œil à l'API Java Library comme guide (certaines ne sont pas bonnes, mais beaucoup sont bonnes).
- Ne sur-fournissez pas de méthodes utiles. Trop de méthodes peuvent être difficiles à apprendre, à utiliser, à documenter, à tester et à maintenir. Vous devriez envisager de fournir une méthode qui vous permet d'omettre la description uniquement si elle est utilisée fréquemment. Si vous vous perdez, ne le faites pas.
- Le nombre d'arguments ne doit pas être important. Le nombre d'arguments doit être limité à 4 ou moins. L'utilisateur ne peut pas se souvenir de nombreux arguments, il doit donc les utiliser tout en regardant la référence. Surtout si vous avez de nombreux arguments du même type. Cela est dû au fait que même si l'ordre des arguments est incorrect, une erreur de compilation ne se produira pas et le traitement peut être effectué différemment que prévu. Il existe trois techniques pour réduire le nombre d'arguments.
- Divisez une méthode en plusieurs méthodes. (** J'ai donné des exemples de sublist, indexOf et lastIndexOf de List, mais je ne suis pas sûr **)
- Créez une classe d'assistance. Par exemple, s'il y a quelque chose qui prend le modèle et le nombre de Trump comme argument, créez une entité qui résume le modèle et le nombre et prenez-le comme argument.
- Utilisez le modèle de constructeur. (Item2)
- Les types d'argument doivent avoir la priorité sur les classes concrètes sur les interfaces. En faire une classe concrète oblige l'utilisateur de la méthode à implémenter une implémentation particulière, forçant parfois une copie coûteuse.
- boolean Devrait être une énumération binaire plutôt qu'un argument. Parce qu'enum est plus facile à étendre plus tard (de 2 à 3 éléments). Enum peut également contenir des méthodes. (Item34)