Git Product home page Git Product logo

uniq's People

Contributors

viatus avatar

uniq's Issues

Code style

  • Классы именуются с большой буквы; Upd. Still ongoing.
  • Вместо сокращений для обозначения переменных/ методов лучше использовать короткие содержательные имена; Upd. Still ongoing.
  • Повторяющиеся if-ы над одним и тем же аргументов лучше реализовывать через switch-case (или, в качестве альтернативы, попробовать придумать контейнер для хранения значений параметров и итерироваться по нему по очередному поступившему символу);
  • Дублирующийся код лучше выносить во вспомогательные функции.
  • Sic. Array и List - понятия отличающиеся;

Console utility

  • При разработке java-приложений написанный разработчиком код компилируется в содержащие выполняемый JVM байт-код файлы с расширением “.class”. После того, как такой файл, содержащий точку входа main, скомпилирован, его можно вызвать из командной строки, перейдя в папку target\classes и выполнив команду “java –classpath . packageName.className” (читать при этом из консоли имя утилиты – имя файла, не требуется). Для того, чтобы осуществить компиляцию, можно выполнить команду build или воспользоваться командами compile/ package выбранного средства управления жизненного цикла проекта (Gradle или Maven). Вторая команда позволяет упаковать все class-файлы проекта в jar-архив, который также можно запустить.

Tests improvement

  • Тесты необходимо разрабатывать для всех содержательных (сложнее get/set) методов класса;
  • Для автоматизированного тестирования выбрасывания исключений можно использовать метод fail.

Argument parsing improvement

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

  • в текущей версии кода никак не отслеживается необходимость/ невозможность совместной установки ключей (актуально, например, для -u и -c). Одним из наиболее удобных решений с применением args4j может стать использование тега forbids;

  • при работе с утилитой кс набор аргументов задаётся непосредственно при запуске (через консольный ввод в рамках Вашей задачи может, при определённых значениях ключей, задаваться только распознаваемый текст). С тем, как это выглядит, можно ознакомиться на примере утилиты ls и ключа --help, например, вот здесь. И с самой uniq, создав файл, тоже.

Distribution

  • файл манифеста должен включать в себя определение главного (запускаемого) класса jar-архива;

  • наиболее простым вариантом получения исполняемого jar-архива является использование одного из двух стандартных вариантов их генерации:

    • с извлечением и встраиванием библиотечных классов в тот же архив, где хранится структура папок, .class-файлы и файл манифеста разработанной утилиты;
    • с формированием jar-архива, содержащего информацию только об утилите, и через файл манифеста ссылающегося на библиотечные jar-архивы, копируемые в ту же папку - при этом результат генерации артефакта в ещё один jar-архив упаковывать не требуется.

Logic issues & optimization

  • Действительно ли вызов «input.getPath().equals("")» - лучшее решение для проверки задания соответствующего ключа?
  • Для работы с ресурсами, такими, как файл, предпочтительно использовать шаблон try-with-resources;
  • Для проверки на пустоту String можно использовать метод isEmpty;
  • При установленном флаге “-s” выводить, по заданию, нужно первую строку .

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.