Conversation
|
|
||
| public class MovieRecommender { | ||
|
|
||
| private int totalReviews = 0; |
There was a problem hiding this comment.
redundant initialization, in Java the primitives are initialized by default in this case to 0
| private BidiMap<String, Integer> products = new DualHashBidiMap<>(); | ||
|
|
||
| public MovieRecommender(String moviesPath) { | ||
| try { |
There was a problem hiding this comment.
You can have some of the logic in the constructor but not the entire functionality, also a code full of conditionals is a bad signal, try to clean up the code with polymorphism or at least use a switch statement
| String userId = null; | ||
|
|
||
| while((line = br.readLine()) != null){ | ||
| if (line.startsWith("review/score")) { |
There was a problem hiding this comment.
use constants to avoid magic numbers and repeated string
| FileReader fr = new FileReader(file); | ||
| BufferedReader br = new BufferedReader(fr); | ||
|
|
||
| File csvFile = new File("movies.csv"); |
There was a problem hiding this comment.
read these values from a property file to make your code more flexible and maintainable
| @@ -15,7 +15,7 @@ public class MovieRecommenderTest { | |||
| public void testDataInfo() throws IOException, TasteException { | |||
There was a problem hiding this comment.
Please use a meaningful name for the tests, something like the intention of your test, what you are trying to show, and provide more context to the assertions; the test not only proves that your code works fine, you are providing 'live' documentation.
To run the test it's necessary to download and unzip the file 'movies.txt' from: http://snap.stanford.edu/data/web-Movies.html