Сколько параметров функции слишком многие? [дубликат]

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

public class MyLocation {
    private int zipcode;
    private String country;
    public MyLocation(int zipcode, String country) {
        this.zipcode = zipcode;
        this.country = country;
    }
    public int getZipcode() {
        return zipcode;
    }
    public String getCountry() {
        return country;
    }
}

Кроме того, у вас есть набор данных с разделителями, поэтому вы должны воспользоваться этим! Используйте String.split() и разделите эту точку с запятой, чтобы получить массив с обоими элементами, готовыми к извлечению.

ArrayList<MyLocation> locations = new ArrayList<>();
try {
    FileReader file = new FileReader("C:\\Users\\me\\Desktop\\places.dat");
    Bufferedreader r = new BufferedReader(file);
    try {
        String line;
        String[] lineValues;

        while ((line = r.readLine()) != null) {
            lineValues = line.split(";");
            MyLocation location = new MyLocation(Integer.valueOf(lineValues[0]), lineValues[1]);
            locations.add(location);
        } 
    } finally {
        r.close();
    }
} catch (IOException e) {
    e.printStackTrace();
}

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

Как уже упоминали другие, если вы хотите сортировать, вам нужно также реализовать Comparable, но это довольно просто.

7
задан Community 23 May 2017 в 12:06
поделиться

15 ответов

Я не знаю, но я знаю это, когда я вижу его.

18
ответ дан 6 December 2019 в 04:50
поделиться

Я сказал бы максимальные 4. Что-либо выше, я думаю, должен быть помещен в классе.

-1
ответ дан 6 December 2019 в 04:50
поделиться

И это зависит языка программирования.. В C действительно не редко видеть функции с 7 параметрами.. Однако в C#, я редко видел больше чем 5 параметров, и я лично обычно использую меньше чем 3.

// In C 
 draw_dot(x, y, size, red, green, blue, alpha)

// In C# 
 Point point(x,y);
 Color color(red,green,blue,alpha);

 Tool.DrawDot(point, color);
0
ответ дан 6 December 2019 в 04:50
поделиться

Это зависит сильно от типов аргументов. Если они - все целые числа затем 2, могут быть слишком многие. (как я помню который порядок?), Если какой-либо аргумент принимает пустой указатель, то число отбрасывает решительно.

Реальный ответ прибывает из выяснения у себя:

  • как легкий это должно понять вызовы, когда я читаю код?
  • как легкий это должно помнить корректные аргументы и порядок аргументов когда написание кода?
0
ответ дан 6 December 2019 в 04:50
поделиться

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

В наше время можно передать ссылку на объект, который инкапсулирует некоторое сложное состояние (и поведение). Используя 7 из тех определенно был бы слишком много.

Моя персональная цель состоит в том, чтобы избегать использования больше чем 4.

0
ответ дан 6 December 2019 в 04:50
поделиться

Это варьируется от человека человеку. Лично, когда я, сразу испытываю затруднения поняв то, что вызов функции делает путем чтения вызова в коде, пора осуществить рефакторинг для снимания деформации моих серых ячеек.

0
ответ дан 6 December 2019 в 04:50
поделиться

Зависит от Функции также, если бы Ваша функция требует вмешательства активного пользователя или переменных, я не пошел бы мимо диапазона 7-8. Насколько среднее количество параметров для движения с, 5-6 является зоной наилучшего восприятия, по-моему. Если Вы используете больше, чем которые Вы могли бы хотеть рассмотреть объекты класса как параметры или другие меньшие функции.

0
ответ дан 6 December 2019 в 04:50
поделиться

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

С распространяющимся из Intellisense (или эквивалентный в других IDE) и подсказки, показывающие комментарии от Документации XML в Visual Studio, я действительно не думаю, что существует твердый ответ на этот вопрос.

1
ответ дан 6 December 2019 в 04:50
поделиться

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

Не то, чтобы я всегда следую за этим сам ;)

4
ответ дан 6 December 2019 в 04:50
поделиться

Поскольку меня 5.

Трудно справиться (помните имя, порядок, и т.д.), кроме того. Плюс то, Если я приезжаю, что далеко у меня есть версии со значениями по умолчанию, которые называют этого.

0
ответ дан 6 December 2019 в 04:50
поделиться

Быстрый ответ: Когда необходимо остановить и задать тот вопрос, у Вас есть слишком многие.

Лично мне нравится сохранять число под шесть. Если больше необходимо, то решение зависит от проблемы. Один подход должен использовать функции "метода set" для предоставления значений объекту, который в конечном счете выполнит функцию, которой Вы требуете. Другая опция состоит в том, чтобы использовать структуру, как Вы упомянули. Так или иначе Вы не можете действительно пойти не так, как надо.

1
ответ дан 6 December 2019 в 04:50
поделиться

Robert C. Martin (Дядя Bob) рекомендует 3 как максимум в Чистом Коде: Руководство Гибкого Мастерства программного обеспечения

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

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

2
ответ дан 6 December 2019 в 04:50
поделиться

По словам Steve McConnell в Завершенном Коде, Вы должны

Ограничьте количество параметров стандартной программы приблизительно к семи

16
ответ дан 6 December 2019 в 04:50
поделиться

Слишком много параметра является "Запахом Кода".

Можно разделиться на несколько методов или использовать класс для перегруппировки переменной, которые имеют что-то общее.

Помещать число для "Слишком много" - что-то очень субъективное, и зависьте своей организации и языка, который Вы используете, эмпирическое правило - то, что, если Вы не можете считать подпись своего метода и иметь идею того, что это делающий, чем Вы, мог бы иметь слишком много информации. Personnaly, я пытаюсь не пробежаться через 5 параметров.

1
ответ дан 6 December 2019 в 04:50
поделиться

Если необходимо спросить затем, что это - вероятно, слишком многие.

8
ответ дан 6 December 2019 в 04:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: