Provide guidance on parameters and variables with the same name

Aperta
#12 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
35/100
Tipo di issue
Documentazione
Chiarezza
Da chiarire
Stato di attività
Ferma
Stack tecnologico
python
Ambito
documentation

Direzione di ricerca

The issue names no files, tests, or entry points to inspect. Compare the three naming and variable-design examples, then document a decided convention for parameters and variables with the same name, including when the convention is considered complete.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

For example, consider the case of identifying whether a household is in poverty, where poverty line is indexed by household size. The formula could include Python variables that both represent the poverty line parameter (which is indexed by household size) and the household's poverty line based on their specific household size. I see three ways to address this:

A: Add a qualifier to the entity's value, e.g. household_
class is_in_poverty(Variable):
    def formula(household, period, parameters):
        poverty_line = parameters(period).poverty.poverty_line
        household_size = household.nb_persons()
        household_poverty_line = poverty_line[household_size]
        return household("household_income") < household_poverty_line
B: Add a qualifier to the parameter, e.g. param_ or p_
class is_in_poverty(Variable):
    def formula(household, period, parameters):
        param_poverty_line = parameters(period).poverty.poverty_line
        household_size = household.nb_persons()
        poverty_line = poverty_line[household_size]
        return household("household_income") < poverty_line
C: Add a separate OpenFisca variable for any parameter indexed by household features
class household_poverty_line(Variable):
    def formula(household, period, parameters):
        poverty_line = parameters(period).poverty.poverty_line
        household_size = household.nb_persons()
        return poverty_line[household_size]

class is_in_poverty(Variable):
    def formula(household, period, parameters):
        return household("household_income") < household("household_poverty_line")

Option C creates a lot of variables, but it seems cleanest to me. I think it would avoid the issue of potentially overlapping variables to represent parameters and Variables, but there might be some cases I'm not thinking of.

Lingua principale
Makefile
Stelle
1
Fork
3
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di PolicyEngine/policyengine.dev

Tutte le issue di PolicyEngine/policyengine.dev

Issue simili

Altre issue su Documentation

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.