You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Какими недостатками обладает объявление переменных публичными (класс Parser)? Почему в большинстве ситуаций используются
сеттеры + приватные поля? Какой выигрыш Вы здесь получили (если получили), отказавшись от такого стандартного подхода?
Неочевидно, почему для указания output file выбрано имено Option - такой выбор требует "ручного" контроля того, что в списке аргументов действительно указан
выходной файл. Кажется, заметно проще воспользоваться Argument (required = false)
Parser. public void buildOutput(HashMap<String, List> results) throws IOException { - для объявления сигнатур методов (особенно, публичных) используют
максимально общие возможные типы данных (стараются гарантировать как можно меньше "специфики": наличия конкретных методов, конкретных алгоритмических решений и т.д,
сводя всё к минимальному "контракту на поставку услуг") - т.е., в данном случае вместо класса HashMap лучше требовать просто Map на вход. Аналогично для
public OutputBuilder(boolean fileOutput, File outputFile, HashMap<String, List> results) { и т.д. Поля также обычно стараются объявлять на уровне интерфейсов
public List arguments = new ArrayList<>(); - для хранения информации обычно стоит использовать специализированный тип.
Например, здесь это может быть сам File или path
Парсинг аргументов и вызов основной функциональности приложения - точно две независимые задачи, класть их обе в parse - нечитаемо, лучше отдельно вызвать конструктор,
отдельно метод для получения результатов, причем по названию метода должно быть очевидно, что именно он делает.
BuildMap. buildMap. if (reverseOutput) { - возможно, я чего-то не увидела, но HashMap гарантирует по дефолту сортировку? Какие вообще реализации Map существуют? Чем они отличаются?
Permissions. Чем отличаются статические методы от методов объектов класса? Вам здесь действительно нужен именно тот вид методов, который сейчас используется?
сеттеры + приватные поля? Какой выигрыш Вы здесь получили (если получили), отказавшись от такого стандартного подхода?
выходной файл. Кажется, заметно проще воспользоваться Argument (required = false)
максимально общие возможные типы данных (стараются гарантировать как можно меньше "специфики": наличия конкретных методов, конкретных алгоритмических решений и т.д,
сводя всё к минимальному "контракту на поставку услуг") - т.е., в данном случае вместо класса HashMap лучше требовать просто Map на вход. Аналогично для
public OutputBuilder(boolean fileOutput, File outputFile, HashMap<String, List> results) { и т.д. Поля также обычно стараются объявлять на уровне интерфейсов
Например, здесь это может быть сам File или path
отдельно метод для получения результатов, причем по названию метода должно быть очевидно, что именно он делает.
См. https://stackoverflow.com/questions/10710193/how-to-preserve-insertion-order-in-hashmap
https://linuxcontainers.org/lxd/try-it/?id=93071cc9-bdad-42f8-9754-585e7184894f#introduction - вот здесь можно попробовать поиграться с оригинальной утилитой.
Например, введя последовательно команды
cat 1>t
ls -l