googleapis / googleapis/google-cloud-cpp

Consider unteaching `ServiceCodeGenerator` about sources vs. headers

Ouverte
#14,198 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

cpp: generator type: cleanup
Langage dominant
C++
Étoiles
659
Forks
463
Merge moyen
1 j 2 h
PR mergées (30 j)
89

Description

We could have one ServiceCodeGenerator per file, instead of one ServiceCodeGenerator per potential pairs of files.

ServiceCodeGenerator writes files. It takes care to distinguish between headers and sources. It has a separate Printer for source and header. It has many CcFoo() / HeaderFoo() member functions. But the implementation of these member functions are basically the same.

Why we would do this:

  • I am about to introduce a hacky overload because I want a ServiceCodeGenerator that only writes a source file.
  • Simplify the class. I suspect it will be easier to navigate. (I often forget whether I am in GenerateHeader() or GenerateCc())
  • We could parallelize writing headers and sources. The savings, if any, would be negligible.

Why we wouldn't do this:
If there was a ton of common code shared between headers and sources, then having one class to control both makes sense.

  • The client generators have a shared initialization for {get,set}_iam_policy_extension_.
  • The connection generators share a ConnectionFactoryFunctionArguments()

We could always factor this stuff out. The processing could happen in make_generators.cc, instead of inside the generator. e.g. Each ServiceCodeGenerator calls SetMethods() which does the same work to produce its methods_, async_methods_. That could also happen once outside of the ServiceCodeGenerators.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par lire ServiceCodeGenerator et make_generators.cc, en vous concentrant sur l'initialisation partagée, SetMethods(), methods_ et async_methods_. Déterminez comment les fonctions actuelles CcFoo()/HeaderFoo() et les Printers séparés coordonnent la sortie du code source et des headers. Le travail est terminé lorsque la structure du générateur reflète la séparation proposée par fichier sans perdre le comportement partagé des générateurs de client et de connexion.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
cpp
Domaine
tooling
Type d'issue
Refactorisation
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.