Conversation
Khmelov
left a comment
There was a problem hiding this comment.
Приложение имеет все четыре функции и написано аккуратно, обращая внимание на реализацию анализатора поставил максимальную оценку. Советую избавиться от статических методов и обратить внимание на имена переменных и методов
|
|
||
| public class Main { | ||
| public static void main(String[] args) { | ||
| new MenuService().start(); |
There was a problem hiding this comment.
То что создание приложения и его старт это два разных метода – это хорошо, однако стоило бы назвать объект верхнего уровня как-то логично например application и передать в него компоненты нужные для его работы
|
|
||
| public class BruteForce { | ||
|
|
||
| public static String bruteForceReport(String cipher) { |
There was a problem hiding this comment.
Тут всё хорошо, но полезно привыкнуть делать методы объектными а не статическими
|
|
||
| public class FrequencyAnalyzer { | ||
|
|
||
| private static final double[] EN_FREQ = { |
There was a problem hiding this comment.
Технически это массив, поэтому константное имя лучше не давать
| 2.81,4.73,5.47,6.26,2.62,0.26,0.97,0.48,1.44,0.73,0.36,0.04,1.90,1.74,0.32,0.64,2.01 | ||
| }; | ||
|
|
||
| public static double chiSquared(String text, Language lang) { |
| public static int bestShift(String cipher, Language lang) { | ||
| int alphaLen = (lang == Language.EN ? CaesarCipher.getEnUp().length() : CaesarCipher.getRuUp().length()); | ||
| double bestScore = Double.POSITIVE_INFINITY; | ||
| int bestK = 0; |
| double bestScore = Double.POSITIVE_INFINITY; | ||
| int bestK = 0; | ||
| for (int i = 0; i < alphaLen; i++) { | ||
| String cand = CaesarCipher.transform(cipher, i, false); |
There was a problem hiding this comment.
В языке Java принято писать английские слова полностью даже если строка получается длинной
| } | ||
|
|
||
| private static boolean isInAlphabet(char c, String alphabet) { | ||
| return alphabet.indexOf(c) >= 0; |
There was a problem hiding this comment.
Внутри этот метод будет обходить строку пока не найдёт нужную букву, поэтому если алфавит сохранить в виде карты можно существенно увеличить производительность
| return alphabet.charAt(n); | ||
| } | ||
|
|
||
| public static String getEnUp() { |
No description provided.