Scala: plusieurs objets et les classes dans un fichier unique ou chaque objet/classe son propre fichier
J'ai récemment commencé la programmation en Scala, à venir à partir de Python et Java, je me demandais quelle est la manière correcte ou le moyen accepté est lors de la définition des objets/classes en Scala. Scala prend en charge, tout comme python, pour ajouter plusieurs la classe ou l'objet de définitions dans un fichier unique.
Donc purement à partir d'une structure acceptée point de vue, est-ce que chaque objet devra être défini dans sa propre fiche ou vous êtes autorisé à choisir vous-même?
- Je fais des exceptions lorsque le prototypage, mais dès que le code se solidifie, je refactoriser à la norme de s'en tenir à un seul
class
/trait
et/ou d'un compagnonobject
par fichier. Dans presque tous les cas où je veux définir plusieurs unités, comme avecsealed trait
s ou des implémentations concrètes, il fait sens pour contenir ceux du compagnonobject
. Donc, il vient vraiment à la question: est-ce autre unité raisonnablement "appartiennent" à la compagne de l'objet? Si pas, le mettre dans son propre fichier.
Vous devez vous connecter pour publier un commentaire.
Il y a un chapitre dans l'officiel Scala Guide De Style sur cette. Il est assez clair en lui-même, mais je vais juste laisser quelques citations ici.
L'idée de base est:
Il y a, bien sûr, une exception pour compagnon objets:
Il y a aussi le fait que
sealed
ne fonctionne que dans le même fichier.La plupart du temps, les classes sont de simples conteneurs de données et peuvent être regroupées.
Enfin, il y a une convention de nommage pour exemptés multi-unité de fichiers Scala:
Donc: mettez votre Scala de classes et d'objets dans des fichiers séparés, à moins qu'ils entrent dans l'une des trois exceptions mentionnées.
En Scala, il est parfaitement valable pour plusieurs classes dans un seul fichier tant QUE ils sont étroitement liés.
Mais pas toutes les langues encourager la présente convention, et je pense qu'il est utile d'examiner la raison.
Personnellement, je n'aime pas quand les gens mettent plusieurs classes dans un même fichier, car il est plus difficile de trouver une définition de classe. Ceci est amplifié dans les revues de code où je veux être en mesure de passer en revue le code le plus rapidement possible sans creuser autour.
Contre
grep
pour trouver un fichierPros
Parfois, vous avez à mettre plusieurs traits de personnalité, des classes ou des objets dans un fichier source, en particulier lorsque vous utilisez
sealed
traits. Unsealed
trait ne peut être étendu à l'intérieur du même fichier source.