I’m quite new to programming (less than a month), and some exercises feel mammoth-like to me as a beginner. Such is the case with the Meal Maker project. Hence, today I decided to revisit it and declare it war (in a friendly way) with the best of my intentions … and resilience.
What did I find out after all this day’s detective work ? If you found this exercise somewhat challenging to digest, it may help to realize that steps 2-6 are of no effect to the specific purpose of randomizing a three course meal. This made me develop a stronger appreciation for different JS concepts and what code does what.
I realized I could simply have appetizers, mains and desserts direct children of the menu object, which will shorten the neccessary code.
I then had to adapt the getters and setters not to incur in a call stack error. Later, I also realized they have no impact for the purpose of randomizing a meal.
I’ve read it’s good practice to have getters and setters up. Also, having a _course section encapsulate the different courses may be helpful.
But it did help me better understand the exercise by realizing the above. Hope this may help you to.
Thanks, and good coding!
(ps: it might also be easier to start with the project Team Stats - which is about creating a method to add object instances into an array - and then move back to Meal Maker)
Hi guys. I’ve been learning also and had some issues initially but eventually I got to sort it without help the second time around.
Key points would probably be the clear understanding of the this. keyword (which I’ve come to understand is a hot topic to everyone) and testing your methods as you build them.
In this case because you have 3 arrays declared but not initialised (aka empty) you wont be able to test them so I suggest either having something in there so you can log and see the results as you go.
Hi there. I’d love to hear just a little more from the team on the getters and setters, as per the original statement of this forum topic.
I can totally comment out the getters and setters code for appertizers, mains and desserts e.g.
get appetizers() {
return this._courses.appertizers;
},
set appetizers(appetizerIn) {
this._courses.appetizers = appetizerIn;
},
And the whole thing still works?
then in Step 8 in the hint, it is mentioned in comments // also try using your setter method!
this._courses[courseName].push(dish); // also try using your setter method!
I’d love to find out more here, thanks!
I’ve re-read the exercise and the docs and I see that JavaScript getter and setter methods are helpful in part because they offer a way to intercept property access and assignment, and allow for additional actions to be performed before these changes go into effect.
So in this case, we were literally getting and setting the values directly without modifications or checking, so it would work with or without being there. I guess if we had done some checks and then forces an error like assigning a string to where there should be a number, we’d have seen the usage of the getter or setter.
yes this project is ridiculous with bad explanations. My friend has been using JS for 10+ years, his favorite language, and says people use object oriented programming very rarely. So i’m not too worried about my lack of understanding on this poorly designed project
I found this very confusing as well.
It did help me in the sense that it forced me to look up getters and setters and objects and methods and properties and try to settle all these things in my mind.
I must admit - I had no clue and needed to rely on the hints but they also did not produced a code that was functioning so
i looke at the video.
Following the video was helpful as a study aid - trying to work out what happens in the code was very helpful.
I also realized that I could comment out the setters section and it does not affect the code.
I didn’t brave to comment out the getters.
Any how I wrote all thoughts about the project highlighting what I find difficult or unclear.
Am happy to provide these notes to the people who write the instructions. (might be helpful for them to see it from the point of view of a complete beginner)
Cheers
let appetizer = this.getRandomDishFromCourse('appetizers')
let main = this.getRandomDishFromCourse('mains')
let dessert = this.getRandomDishFromCourse('desserts')
let total = appetizer.price + main.price + dessert.price
return `Your Meal: ${appetizer.name}, ${main.name}, ${dessert.name} and Total Price is: ${total}`
}
I’m having problems understanding the return function. Can anyone explain, please?