bahieu123123 / FileSearch

0 stars 0 forks source link

Arguments parsing improvement #1

Open Suntrie opened 6 years ago

Suntrie commented 6 years ago

-Для решения рутинных задач принято использовать библиотеки – это, обычно, быстрее, и несколько сложнее ошибиться в разрабатываемом коде. Для парсинга можно использовать, например, org.koshuke.args4j, прописав в pom-файле соответствующую зависимость. Это позволяет избежать и ручной реализации обработки корректности формата входной строки. Upd. Still ongoing. Сейчас на некоторых входах программа будет просто падать (например, если не задана директория поиска, но задан ключ), и будет принимать некорректные входы.

Suntrie commented 6 years ago

Всё ещё актуально.

Примеры некорректных ситуаций:

  • аргумент "-d" задан последним - ArrayOutOfBoundsException;
  • заданы нераспознаваемые опции и корректно задано имя файла поиска;
  • один и тот же аргумент может быть интерпретирован и как значение ключа, и как файл для поиска, например: "-d tmp".

Посмотреть, как реализовать парсер аргументов КС и частично обезапасить себя от ситуаций такого рода можно, например, здесь: https://martin-thoma.com/how-to-parse-command-line-arguments-in-java/

Upd. Всё ещё актуально. Зачем нужно парсить аргументы, чтобы никогда не использовать возвращаемые значения - subDirectory, fileName, directory? В текущем варианте реализации, кроме всего, будет, например, некорректно обрабатываться ситуация вызова find -d dir - здесь dir будет выступать и как директория для поиска, и как искомый файл/ директория. Upd. Всё ещё очень актуально.