prefixtree's People
prefixtree's Issues
Use consistent code style/formatting
В исходном коде программы встречаются разночтения стиля кодирования/форматирования. В качестве референсного стиля кодирования можно использовать google java style guide.
Также в исходном коде крайне нежелательно наличие комментариев, которые не являются Javadoc'ом. Если Ваш код нельзя понять без комментариев, значит это плохой код.
Add properly configured .gitignore file
В .gitignore файле описываются файлы и директории, которые необходимо исключить при работе с данным репоиторием в git. В число таких файлов, как правило, включают специфичные для пользователей файлы, что позволяет избежать конфликтов при конкурентной работе с репозиторием. В частности, сюда целесообразно отнести файлы, генерируемые IDE, поскольку их формат и содержание может отличаться от версии к версии. Для генерации .gitignore в idea удобно использовать .ignore плагин.
Remove unused files
В Вашем проекте не должно быть лишних файлов.
Use common project structure
В java проектах принято файлы исходного кода организовать в определнной структуре папок. Описание одного из наиболее распространенных способов организации проекта смотри здесь или здесь.
Кроме того, в java принято орагнизовывать классы в пакеты. Общепринятые правила именования пакетов см. здесь. Понятно, что у Вас скорее всего нет никакого сайта. В этом случае можно его придумать или взять название орагнизации, в рамках которой делается проект. Например, org.spbstu.your_surname
.
Каждый файл исходного кода должен находится в структуре папок, соответствующей названию его пакета. Например, если файл исходного кода озаглавлен директивой package com.mycompany.myname
, то этот файл должен располагаться по пути com/mycompany/myname
относительно папки с исходным кодом внутри проекта.
Upgrade impl.
- В коде не должно быть лишних комментариев. Если Вам приходится писать комментарии для того, чтобы Ваш код был понятен, то это плохой код.
- В общем случае в коде не должно быть вызовов
System.out.println
. Если Вам необходимо логгирование действий программы, то для этого стоит использовать специальные библиотеки. Если Вам необходимо отладить свою программу, то следует аоспользоваться специальным режимом запуски программы в Вашей ide --- debug. -
child
--- это ребенок в единственном числе, у Вас же внутри экземпляраNode
хранится множество узлов. Очень важно, чтобы имена переменных и методов соответствовали тому, что действительно делает эта перменная/метод. - Вместо
ArrayList
надо возвращатьList
, вместоHashMap
---Map
. Это правило в общем работает и для всех остальных типов коллекций. - Некоторые методы в
PrefixTrie
необходимы только для тестирования. Такие методы стоит вынести в тестовый пакет Вашей программы (отдельным классом или в класс с самими тестами) хотя бы ради того, чтобы они не захламляли основной код программы. - Метод
hasChild
реализован ужасно. Все, что Вы хотели в нем сделать можно записать одной командой. - Метод
input
всегда возвращаетtrue
. - Составление стэка узлов внутри метода
delete
очень похоже на то, что делаетlistNodes
. Подумайте, может быть одинаковый код получится вынести в отдельный метод? - Метод
find
работает некорректно. - Вместо
new String()
лучше писать""
. Подробности см. здесь. Вообще idea такие (и многие другие) вещи подсвечивает. Не игнорируйте, наведите корсур, прочитайте сообщение. В большинстве случаев можно нажатьctrl + Enter
для того, чтобы idea предложила варианты исправлений. - Не понятно, зачем Вам метод
findAllStrings
, который принимаетchar
. Это должен быть просто частный случай методаfindAll
. - Функция
findAll
работает некорректно.
Add Javadoc
Добавьте javadoc к разработанным классам.
Task 2.0
Общая формулировка
Разработать консольную утилиту, реализующую указанную в задании функциональность, на языках Java и/или Kotlin. При проектировании использовать объектно-ориентированный подход. Разработать автоматические тесты для отдельных частей программы. Написанный код держать в отдельном проекте или модуле в репозитории на GitHub.
split
Разбивает большой текстовый файл на маленькие файлы фиксированного размера.
file задаёт имя входного файла.
Флаг -o ofile задаёт базовое имя выходного файла. Если параметр отсутствует, базовое имя выходного файла равняется “x”. Если параметр равен “-”, в качестве базового имени выходного файла следует использовать имя входного файла.
Флаг -d означает, что выходные файлы следует называть “ofile1, ofile2, ofile3, ofile4 …”, где ofile это базовое имя выходного файла. Если же этот параметр не указан, то файлы должны называться “ofileaa, ofileab, ofileac, ofilead … ofileaz ofileba ofilebb … ”.
Флаг -l num указывает размер выходных файлов в строчках. По умолчанию выходные файлы имеют размер в 100 строчек.
Флаг -с num указывает размер выходных файлах в символах.
Флаг -n num указывает количество выходных файлов. Размер файлов при этом должен считаться автоматически.
Command line: split [-d] [-l num|-c num|-n num] [-o ofile] file
В случае, когда какое-нибудь из имён файлов указано неверно или одновременно указано несколько флагов управления размером, следует выдать ошибку.
Кроме самой программы, следует написать автоматические тесты к ней.
Add tests
По условиям первого задания весь разработанный код должен быть покрыт тестами. Для вычисления процента покрытия используйте Run with Coverage. От Вас, естественно, не требуется покрывать тестами такие методы, как equals
, hashCode
и toString
.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.