Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

'Solution' #1434

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

Hulk-hurry-Hulk-smash
Copy link

No description provided.

Copy link

@mateacademy-ai-mentor mateacademy-ai-mentor left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great job on your code! 🎉 It's well-structured and follows Python's conventions. There are a few areas for improvement, such as adding docstrings for better readability and encapsulating operations into separate methods for maintainability. Keep these in mind for your future coding tasks. Keep up the good work! 👍

✨ Please rate this review in the Platform's notification center. I will be grateful for your feedback! ✨

Comment on lines +6 to +7
def __init__(self, number: int) -> None:
self.number = number

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be a good idea to add a docstring to the __init__ method to explain its purpose and the arguments it takes. This can be beneficial for other developers who might work on this code in the future.

Comment on lines +9 to +14
def movie_session(
self, movie_name:
str, customers:
list[Customer],
cleaner: Cleaner
) -> None:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The movie_session method could use a docstring to explain what it does, what arguments it takes, and what it returns. This will enhance readability and maintainability of the code.

Comment on lines +15 to +19
print(f'"{movie_name}" started in hall number {self.number}.')
for customer in customers:
customer.watch_movie(movie_name)
print(f'"{movie_name}" ended.')
cleaner.clean_hall(self.number)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Inside this method, you have a sequence of operations executed one after another. This is a sign that these operations could be encapsulated into separate methods, following the Single Responsibility Principle. For example, you could create a start_movie method, a watch_movie method, an end_movie method, and a clean_hall method. This would make the movie_session method more readable and easier to maintain.

# write you code here
pass
def cinema_visit(
customers: list[dict],

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The type hint for customers is list[dict], which is not very descriptive. It would be better to create a data class or a NamedTuple for a Customer and use it as a type hint. This way, you can ensure that all Customer objects have a uniform structure and it's clear what fields a Customer object should have.

Comment on lines +20 to +21
for customer in customer_instances:
CinemaBar.sell_product(customer=customer, product=customer.food)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In this loop, you are selling a product to each customer. However, it's not clear what happens if the product is not available or if the customer doesn't have enough money. It's recommended to handle these cases.

Comment on lines +23 to +27
ch.movie_session(
movie_name=movie,
customers=customer_instances,
cleaner=cleaner_instance
)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The movie_session method is called with movie_name, customers, and cleaner as arguments. It's not clear what this method does just from its name. Consider renaming it to something more descriptive or adding a docstring to the method to explain what it does.

@@ -0,0 +1,6 @@
class Cleaner:
def __init__(self, name: str) -> None:
self.name = name

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Quality Issue: It is a good practice to add docstrings to your classes and methods. Docstrings provide a convenient way of associating documentation with Python modules, functions, classes, and methods.

self.name = name

def clean_hall(self, hall_number: int) -> None:
print(f"Cleaner {self.name} is cleaning hall number {hall_number}.")

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Quality Issue: The clean_hall method currently only prints a message. If this method is intended to perform actual cleaning operations, it might be a good idea to include a TODO comment to indicate future implementation.

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