Skip to content

Group 1 - refactoring library class#13

Open
PtrBld wants to merge 1 commit intomainfrom
group1
Open

Group 1 - refactoring library class#13
PtrBld wants to merge 1 commit intomainfrom
group1

Conversation

@PtrBld
Copy link
Contributor

@PtrBld PtrBld commented Nov 13, 2023

No description provided.

crime_audio_books: list[Book] = []
max: Optional[Book] = None

# print banner
Copy link
Collaborator

Choose a reason for hiding this comment

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

Quite redundant - not necessarily needed.

Comment on lines +27 to +28
# end else
# end for
Copy link
Collaborator

Choose a reason for hiding this comment

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

The familiar Python reviewer will not need the information about ending for-loops as Python works with indents.

def __init__(self, books: list[Book]):
self._books = books

_books: list[Book] = []
Copy link
Collaborator

Choose a reason for hiding this comment

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

That one is not needed, as the constructor already initializes the variable _books. In the worst case it overwrites your initialized variable.

Comment on lines +37 to +38
def __init__(self, books: list[Book]):
self._books = books
Copy link
Collaborator

Choose a reason for hiding this comment

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

Usually, the constructor is placed on top of the class, before the function declaration starts.

print("********* Longest Crime Audio Book **********")
print("*********************************************")

for b in self.get_books():
Copy link
Collaborator

Choose a reason for hiding this comment

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

Why not directly using _books variable?

Comment on lines +19 to +20
if Genre.CRIME in b.genres:
if b._book_type == "Audio":
Copy link
Collaborator

Choose a reason for hiding this comment

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

You could merge this into one conditional expression using the & operator.

for b in self.get_books():
if Genre.CRIME in b.genres:
if b._book_type == "Audio":
if max is not None and max.duration < b.duration:
Copy link
Collaborator

@NumericalMax NumericalMax Nov 22, 2023

Choose a reason for hiding this comment

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

As you initialize the max with value None this condition never compute to true. Please add a further condition elif to address the case of max == None.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Please be aware, that there might be audiobooks of same max length. Is it intended that only the first one will be returned? If so, please add this to the documentation of the function. Right now you function documentation suggests that multiple books are the return.

for b in self.get_books():
if Genre.CRIME in b.genres:
if b._book_type == "Audio":
if max is not None and max.duration < b.duration:
Copy link
Collaborator

Choose a reason for hiding this comment

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

Please be aware, that there might be audiobooks of same max length. Is it intended that only the first one will be returned? If so, please add this to the documentation of the function. Right now you function documentation suggests that multiple books are the return.

print(f"Author: {max.authors}")
print(f"Duration: {max.duration}")
print(f"______________________________")
return str(max)
Copy link
Collaborator

Choose a reason for hiding this comment

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

max is of type Book. Therefore, casting it to a string is likely to fail and probably will not return the correct name. If you intend to return the title of the audiobook, then please access the title name. A proper naming of the variable max may help to address this issue in the future, e.g., max_duration_book.


class Library():

# Prints crime audio books
Copy link
Collaborator

Choose a reason for hiding this comment

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

Please improve the documentation/commenting of the function. The return value is not clear, the described functionality (prints) is different from the actual function (print and return str).

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.

3 participants