amgenz15 / foodieGrubProject

Recipe website to find all the recopies you could need!
0 stars 0 forks source link

Peer review 2 - Nate Peck #8

Open nateP82 opened 1 year ago

nateP82 commented 1 year ago

Design/Code Review 2

Project: Foodie Grub Project

Developer: Abigail Genz

Reviewer: Nate Peck

Areas for Improvement Criteria Items Met or Exceeded
Project effectively utililizes the technologies and technques specified in the project objectives
MVP functionality needs to be defined in project specs. Planned MVP Functionality In progress
There are some opportunities to add debug statements or info statements in the project. For example, adding logger info statements in methods that run throughout the project could help point to issues as they come up, but overall the logging is setup correctly. Logging framework used, i.e., no System.out.println() or printStacktrace() statements. M - system out, or print stack traces found. Logger implemented throughout project.
Hibernate used for all data access. M - All data access objects properly mapped in the hibernate config file.
Authentication implemented. M - successfully implemented AWS cognito user pool and auth servcies.
This functionality is still being implemented. Consumes at least one web service or public api using Java. In progress
Application is database-driven using full CRUD. M - application uses generic dao to implement create, read, update, and delete scenarios.
Database includes multiple one to many relationships. M - mulitple one to many relationships defined in entity classes.
Deployed to AWS for public access. M - Confirmed by a demonstration of the deployed app on AWS.
Implements best practices (for example, data validation) M - Code adheres to modern coding standards, code is well documented, utilitzes proper unit test coverage.
Synthesis of multiple concepts in unfamiliar situations requiring research beyond the scope of the class
Experiments individually, exhibits independence and drive, shows originality in the solution. M - Created an original project idea, project implements a creative solution for searching for recipes.
In addition to implementing a custom css template for the project, there are notes in the project plan that indicate the use of a new technology. Implemented technologies or techniques not covered in course materials. M - Implemented a custom css template for the site design.
Code quality - Evaluate code quality for the following and identify specific areas for improvement (class, method or line number). Be sure to list which code quality plugins/tools you used to assist with this analysis
Single-purpose methods M - Single purpose methods used appropriately.
Could incorporate a properties file to abstract some of the resource data, like database username and password. Well-structured project M - Project structure is clean and classes are organized accordingly.
Descriptive naming of packages, classes, methods, variables M - class names, methods, and packages all relate to the overall naming conventions of the project.
Classes appropriately-sized (no monster classes) M - Classes are not oversized. Methods throughout project perform one particular action.
In the GenericDao class there are some lines that are repeated in methods, these could be cleaned up much like the getSession method. CPD (copy paste detection, meaning are the same lines of code repeated? M - Overall meeting the mark on this, but as noted there are some lines in pre-build classes that could be refactored.
Unsure if there are opporunities here to refactor things with super/subclasses or interfaces. Are there candidates for super/subclass relationships, abstract classes, interfaces
There are opportunities to add some of the database properities to a properties file. Are any values hard-coded that should be in a properties file? In progress
Proper exception handling M - Exception errors are handled with logger.error statements.
Error page routing could be added. For example, during the authentication flow there are comments to add error page routing. Proper error reporting to the user - custom erro pages? In progress
Code documentation M - Code is properly documented: methods contain @param, @return, and accurate descriptions.
Is there code in the servlet doGet/doPost that should be refactored into testable classes or methods? M - code meets this requirement. Servlet methods are small enough and perform minimum functionality.
Evaluate the JSPs for templating, data validation, overall look and feel. M - JSP pages well thought out, and use a custom css template for design.
Some of the include statements on the jsps could be updated to use core tags instead of include. JSPs use JSTL and EL, no java code M - Properly importing the JSTL tag, utilizing expression language.
Unit tests are truly a unit test rather than a high level functional test M - Unit tests test one thing, and verify that it is accurate and it is truly returning the result that is expected.
Test data is appropriately cleaned up or handled M - Project incorpoates a database cleanup and build before each test.
There is full coverage of methods that perform business logic or utility functions M - Dao classes achieve proper unit test coverage.
Redundant code is eliminated by using set up and tear down methods, i.e., @Before, @After M - see comments on test data cleanup above.
Other comments/notes?
Demonstrates initiative and thoughtful planning to leverage available resources (time, equipment, external expertise) to meet milestones and project objectives. M - Project milestones one, two, and three have been met and documented as issues in github.
Evidence of significant revision and incorporation of feedback. M - Project has been revised based on feedback. GenericDao has replaced original UserDao and RecipeDao classes.
Project complexity M - project incorporates the complex configuration files, class hirearchy structure, and unit test coverage.
Additional Comments Overall, this is a solid foundation with a lot of complex parts that are being brought together in a well thought out process. You should be proud of what you have accomplished so far with the project! I like the idea that the project is attempting to solve, as I have had plenty of experience looking up recipes and having to scroll through long articles to get to what I really want to see. Nice work!
nateP82 commented 1 year ago

@amgenz15 Above is my peer review for the Recipe Website project.

pawaitemadisoncollege commented 1 year ago

Hi @nateP82 Thanks for sharing your code review findings here. Looks like you found some good "kudos" items as well as areas for improvement.

You mentioned uncertainty around "Unsure if there are opportunities here to refactor things" - I took a look and did not find cases for this at this point in development. There is opportunity to slim some of that boiler plate code down by using Lombok. While this is not required, it does provide a nice way to make the entity classes look lean and clean.