Skip to content

Conversation

@denisseai
Copy link

Assignment Submission: Hotel

Congratulations! You're submitting your assignment. Please reflect on the assignment with these questions.

Reflection

Question Answer
What was a design challenge that you encountered on this project? Updating the project to match what we learned about single responsibility is still a challenge. I made a class to keep the start and end dates then I deleted it. I will most likely remake that class because as the project grew I saw a need for it.
What was a design decision you made that changed over time over the project? Drawing a diagram at the beginning helped, but my design changed somewhat after I started coding. I will more than likely make more classes and methods that follow S.
What was a concept you gained clarity on, or a learning that you'd like to share? I feel more comfortable using TDD and I have a better understanding on why design is important.
What is an example of a nominal test that you wrote for this assignment? What makes it a nominal case? In ReservationManager, I wrote a nominal test that checks if it can create a reservation successfully when rooms are available. It is a nominal case because the check will have to be done very often.
What is an example of an edge case test that you wrote for this assignment? What makes it an edge case? An example would be that the code can handle an error if the end date for a reservation is invalid. It will raise an StandardError with a message on why it failed.
How do you feel you did in writing pseudocode first, then writing the tests and then the code? I can and will be more consistent in following the recommendations. I did try following the pseudo then tests and then code but felt like I was taking longer to complete the waves.

@jmaddox19
Copy link

Hotel

Section 1: Major Learning Goals

Criteria yes/no, and optionally any details/lines of code to reference
Practices SRP by having at least two separate classes with distinct responsibilities, and test files for these two classes ✔️
Overall, demonstrates understanding instance variables vs. local variables. (There aren't unnecessarily too many instance variables, when it should be a local variable) ✔️
For each test file, tests demonstrate an understanding of instantiating objects properly, and using Arrange-Act-Assert ✔️
Practices pseudocode and TDD, and reflected on it by filling out the reflection questions ✔️
Practices git with at least 15 small commits and meaningful commit messages ✔️

Section 2: Code Review and Testing Requirements

Criteria yes/no, and optionally any details/lines of code to reference
There is a class that represents a reservation, and a second class that holds/manages a collection of reservations through composition (instance variable) ✔️
The logic for checking if a reservation's date overlaps with another reservation's date is complex logic that is separated into method(s) (and potentially class(es)) ✔️
The logic for checking if a reservation's date overlaps with another reservation's date has unit tests There are unit tests on the available_rooms method which indirectly test the available? method. (This happens because available_rooms calls available?.) That said, it's good practice to unit test every method individually.
All of the given tests run and pass ✔️
A test coverage tool is installed and used, and shows 95% test coverage ✔️ 100%!

Section 3: Feature Requirements

Feature Requirement: There is a method that... yes/no
gives back a list of rooms, and it's tested ✔️
creates a specific reservation for a room for a given date range, and it has nominal test cases ✔️
creates a specific reservation for a room for a given date range, and it tests an edge case, such as no available room, or invalid date range ✔️
gives back a list of reservations on a given date. Its tests include a test that makes several reservations for a given date ✔️
calculates the total price for a reservation ✔️
gives back a list of available rooms for a given date range, and it has nominal test cases ✔️
gives back a list of available rooms for a given date range, and it has edge test cases, such as no available room, or invalid date range
creates a block of rooms ✔️
reserves a room from a block As it is written currently, I don't believe the RoomBlocks will integrate with the Rooms because there is no code in ReservationManager to work with RoomBlocks and integrate them into the tracking of which rooms are available.

Overall Feedback

Overall Feedback Criteria yes/no
Green (Meets/Exceeds Standards) 14+ total in all sections ✔️
Yellow (Approaches Standards) 9-13 total in all sections
Red (Not at Standard) 0-8 total in all sections, or assignment is breaking/doesn’t run with less than 5 minutes of debugging

Additional Feedback

Great work overall! You've built your first project with minimal starting code. This represents an incredible milestone in your journey, and you should be proud of yourself!

I am particularly impressed by the way that you wrote such a succinct solution to the problem. You're code is very easy to read and less lines of code generally means less room for error.

I do see some room for improvement around making sure all of the code is integrated together properly. Please see my note on the bottom line of the rubric above for more details. I'm happy to talk more about that in person if my explanation is not thorough or clear enough.

I also want to respond to your note about following best practices slowing you down. I fully expect testing to slow you down. I would say in general it is normal for writing thorough tests to take you as long (if not longer) than writing the source code. I want to name that writing tests before writing source code is something worth trying a couple times but you are welcome to decide it isn't serving you well.
If pseudocoding is also slowing you down, I wonder if it'd be good to talk with a teacher, TA, or tutor about your pseudocoding process. The hope is that pseudocoding can be something to help speed up your process rather than slow it down.

Code Style Bonus Awards

Was the code particularly impressive in code style for any of these reasons (or more...?)

Quality Yes?
Perfect Indentation
Elegant/Clever
Descriptive/Readable
Concise
Logical/Organized

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants