Каков наилучший способ кодирования перегрузки метода? - PullRequest
2 голосов
/ 17 апреля 2019

Я студент информатики, и в настоящее время я работаю над перегрузкой методов.

Я сделал перегрузку метода для получения случайного числа с различными параметрами: нижняя граница и верхняя граница или только нижняя граница.

Что лучше сделать:

/**
 * Return a random double in [low; sup[
 */
public static double getDouble(int low, int sup) {
    return low + Math.random() * (sup - low);
}

/**
 * Return a random double in [0; sup[
 */
public static double getDouble(int sup) {
    return getDouble(0, sup);
}

Или я должен сделать:

/**
 * Return a random double in [low; sup[
 */
public static double getDouble(int low, int sup) {
    return low + Math.random() * (sup - low);
}

/**
 * Return a random double in [0; sup[
 */
public static double getDouble(int sup) {
    return Math.random() * sup;
}

Короче говоря, мой вопрос: какой путь лучше между обоими? Спасибо.

Ответы [ 2 ]

4 голосов
/ 17 апреля 2019

Одной из действительно больших проблем в разработке программного обеспечения является код дублирование .

Вы абсолютно всегда стремитесь минимизировать идентичные сегменты кода.

Конечно, в ваших примерах практически не имеет значения, какую версию вы выберете.Если ваш код будет таким и никогда не будет изменен, оба варианта будут удобочитаемыми и хорошими.

Но есть вероятность, что со временем все должно быть улучшено или изменено.И тогда вариант 1 требует от вас уделять немного меньше внимания и усердия.Таким образом, вы идете на это.

Также обратите внимание, что совершенно прекрасно думать о таких тонкостях.Не потому, что этот конкретный пример так важен, а чтобы обучить этому навыку.Так что вы готовы и готовы прийти в тот день, когда вам придется писать код более высокой сложности, который не помещается в 10 строк!

И да, это не связано с перегрузкой .Как сказано: минимизация дублирования кода всегда должна быть одним из ваших высших приоритетов.Иногда вам приходится идти на компромисс, но вы делаете это как сознательное решение, а не из-за ленивого настроения или побуждения.

3 голосов
/ 17 апреля 2019

Первый. Это делает его лаконичным и позволяет избежать дублирования кода.

Повторное использование метода как части перегруженного метода не является обязательным требованием для перегрузки метода, скорее это способ чистого кода. Перегруженные методы также могут иметь совершенно разные реализации, но в случае схожей реализации лучше повторно использовать метод, чем заново писать всю реализацию целиком.

...