Refactoring - Extract Method
Motivation: Producing methods that efficiently communicate what they do and how they do what they do. It consists of calls to well-named methods that are all at the same level of detail.
public float CalculateMovieRanking(float rating, int totalVotes, int minVotesRequired, float meanVotes) { if (rating > 10 && rating < 0) throw new Exception("The rating should be in range of 0 and 10"); if (minVotesRequired < 3000) throw new Exception("Minimum votes required for the calculation is 3000"); if (totalVotes < minVotesRequired) throw new Exception("The total votes can not be less than minimum votes required"); if (meanVotes > 10 && meanVotes < 0) throw new Exception("The mean votes should be in range of 0 and 10"); float movieRanking = (rating*totalVotes + minVotesRequired*meanVotes) / (totalVotes + minVotesRequired); return movieRanking; }Refactor as:
public float CalculateMovieRanking(float rating, int totalVotes, int minVotesRequired, float meanVotes) { ValidateParameters(rating, totalVotes, minVotesRequired, meanVotes); float movieRanking = (rating * totalVotes + minVotesRequired * meanVotes) / (totalVotes + minVotesRequired); return movieRanking; } private static void ValidateParameters(float rating, int totalVotes, int minVotesRequired, float meanVotes) { if (rating > 10 && rating < 0) throw new Exception("The rating should be in range of 0 and 10"); if (minVotesRequired < 3000) throw new Exception("Minimum votes required for the calculation is 3000"); if (totalVotes < minVotesRequired) throw new Exception("The total votes can not be less than minimum votes required"); if (meanVotes > 10 && meanVotes < 0) throw new Exception("The mean votes should be in range of 0 and 10"); }
Comments
Post a Comment