Skip to content

Tome Rater Summary & Rubric Score #5

@karl-project-review

Description

@karl-project-review

Tome Rater:

Rubric Score

Criteria 1: Valid Python Code

*Score Level: 4/4 (Exceeds Expectations)
*Comments: Your code runs without producing any errors. Well done! However, as noted in issue #3, the get_n_most_read_books could potentially throw errors if the user passed a value of n than exceeded the number of books in the TomeRater library.

Criteria 2: Implementation of Project Requirements

*Score Level: 4/4 (Exceeds Expectations)
*Comments: You not only implemented all of the required classes and functions, but several extra functions as well, all of which produce the correct output. Great job!

Criteria 3: Software Architecture

*Score Level: 4/4 (Exceeds Expectations)
*Comments: Since the only major issue with the software architecture was a result of trying to perform extra checks, I'm not taking off any points. However, as noted in issue #1, the input validation performed in your init functions would be better performed in the TomeRater functions that call them, as this way we could avoid calling the _init_functions altogether when we don't have the proper input.

Criteria 4: Uses Python Language Features

*Score Level: 4/4 (Exceeds Expectations)
*Comments: You consistently use Python language features where appropriate. Nice work!

Overall Score: 16/16 (Exceeds Expectations)

Well done with this project! You went above and beyond, implementing extra functions and performing pretty thorough checks in your functions to prevent errors. What's more, you updated your test script to make sure your code works appropriately. My main advice to you is to focus on efficiency and reducing the runtime of your functions. For example, as noted in issue #2, there are places where redundant conditions are included in if statements. Also, your get_n_most functions become less efficient as n approaches the total number of users or books in the TomeRater object, as they go back through the temp dictionaries/lists for each individual maximum. Using a different approach (perhaps using the sort() function for a temp list, then returning the last n values from that list) could speed these functions up for larger n values (though it is possible these functions simply are not intended to be used for large n; that's a question we would need to think and/or ask about as developers before designing the functions). Again, though, great work on this project!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions