Re-design `allergies`
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 25/100
- Type d'issue
- Refactorisation
- Clarté
- À clarifier
- Activité
- Calme
- Stack technique
- php
- Domaine
- testing-qa
Piste de recherche
Commencez par examiner l'exercice allergies actuel, sa classe utilitaire Allergen et les tests qui utilisent Allergen dans un dataProvider. Comparez les trois suggestions concernant enum et les types primitifs, puis considérez l'exercice retenu et la conception des tests comme terminés dès que l'implémentation ne nécessite plus l'approche problématique fondée sur une classe utilitaire.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
The current exercise design has many problems:
- Students must implement a helper class
Allergenthat has no TDD style guidance Allergenis used in tests, in a@dataProvider. That gives hard to understand PHP errors in tests onlyAllergenwould not be implemented that way anymore - it is a typicalenumclass
Problem specifications do not ask for a certain implementation. They define the problem statement as open as possible. Our design also should allow as many solutions as possible.
Suggestion 1: Strings and integers only
This leaves all possibilities open. Mentors can suggest enum or such to students. But enum is optimal for interfaces, internal enum usage just complicates things.
Suggestion 2: Provide enum stub
In addition to the tests from problem specifications we test the enum implementation first. When that is implemented, the actual problem is tested for. In these tests we must use the enum type, too (like Allergen now).
This forces students to use enum. It raises the bar for students not familiar with that. But enum would be a good choice in a real life scenario.
Suggestion 3: Provide ready-made enum
As before, this forces students to use an enum type. But the level of required knowledge is lower (only usage is required). But still, it makes no sense to work with other types internally then.
Which way to go? Other suggestions?
- Langage dominant
- PHP
- Étoiles
- 167
- Forks
- 151
- Merge moyen
- 4 h 55 min
- PR mergées (30 j)
- 2
Préparer son environnement
Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Aucun guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de exercism/php
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 20/100
-
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
-
Discussion: Test generator designPeut-être à nouveau libre @mk-mxp l’a pris il y a 394 jours, et aucune pull request n’est ouverte. Ouverte
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 20/100
-
Tracking: Test generator MVPPeut-être à nouveau libre @mk-mxp l’a pris il y a 983 jours, et aucune pull request n’est ouverte. Ouverte
exercism/php#631 · 2 commentaires · 1 réaction · 1 personne assignée ·
Toutes les issues de exercism/php
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
OpenConext/OpenConext-engineblock#2168 ·
Les mainteneurs répondent en général sous 5 jours
-
mobile-app
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
Open-Locker/Open-Locker#352 ·
Les mainteneurs répondent en général sous 1 jour
-
[Bug]: SCIM Users groups[].value is returned as an integer, causing authentik user discovery to failOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
grokability/snipe-it#20006 ·
Les mainteneurs répondent en général sous 1 jour
-
fixed
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
firefly-iii/firefly-iii#13150 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
type/bug
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
Les mainteneurs répondent en général sous 1 jour