-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
- Какими недостатками обладает объявление переменных публичными (класс 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 существуют? Чем они отличаются?
- LongOutput. getFileSizeBytes. file.getLength() определён для директорий? Если нет, то, кажется, код нужно немного поправить
См. https://stackoverflow.com/questions/10710193/how-to-preserve-insertion-order-in-hashmap - Permissions. Чем отличаются статические методы от методов объектов класса? Вам здесь действительно нужен именно тот вид методов, который сейчас используется?
- Permissions. getPermissionsRWX. Битовая маска всегда должна содержать 3 позиции - если какое-то из прав отсутствует, в позиции выводится "-".
https://linuxcontainers.org/lxd/try-it/?id=93071cc9-bdad-42f8-9754-585e7184894f#introduction - вот здесь можно попробовать поиграться с оригинальной утилитой.
Например, введя последовательно команды
cat 1>t
ls -l
Metadata
Metadata
Assignees
Labels
No labels