powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / нужен реинжиниринг короткого кода на java
25 сообщений из 249, страница 2 из 10
нужен реинжиниринг короткого кода на java
    #40055966
pesets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev,

если есть интерес все таки выяснить врун я или нет - задайте вопросы, отвечу что делает каждая строчка.
но, правду говоря, тратить время на какие то доказательства - это в моем положении роскошь.
...
Рейтинг: 0 / 0
нужен реинжиниринг короткого кода на java
    #40055969
pesets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp
pesets
пропущено...


я поступил еще логичней - я не просил никого ничего никуда переносить.
))))
Двойка по логике.
Вас вместе со стулом перенесли с рынка на галеры. Знаете такие?
А вы продолжаете сидеть с умным видом дальше как будто ничего не произошло)))).


никто не умрет )) ну поищу помощи в другом месте
...
Рейтинг: 0 / 0
нужен реинжиниринг короткого кода на java
    #40055973
pesets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev
По коду.

То с помощью исключений, то с помощью малопонятного ErrCount



касательно исключений - согласен полностью, но уперся в ситуацию, которую пока не смог победить.
всплывало исключение от java.NIOException, а когда пытался перехватить конкретно данное исключение
всплывало unreported exceprion от java.IOException и рекомендация системы перехватывать самый общий тип исключений, а не конкретное. Разорвать этот круг пока не получилось.
...
Рейтинг: 0 / 0
нужен реинжиниринг короткого кода на java
    #40055974
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pesets

задайте вопросы, отвечу

Почему переменная называется Err Count ?
название другой переменной Fool OperPath ?
...
Рейтинг: 0 / 0
нужен реинжиниринг короткого кода на java
    #40055978
pesets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev
pesets

задайте вопросы, отвечу

Почему переменная называется Err Count ?
название другой переменной Fool OperPath ?


потому что первоначально я хотел ErrCount помещать просто количество ошибок при проверке. Count - от Counter, to count - считать ))
FoolOperPath - тут переменная - полный путь к каталогу OPER, в который я помещаю файлы с сгенерированными операциями POS (Point Of Sail) - т.е. точек продаж.

ну а то, что вместо Fool нужно Full - тупанул )))
...
Рейтинг: 0 / 0
нужен реинжиниринг короткого кода на java
    #40055985
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из критического (на мой взгляд)

1. Отсутсвие вынесенной процедуры/класса который собственно выполняет рабочее действие
note: что есть "рабочее действие" нам не понятно, т.к. задания, что должен делать код и не приложили

2. Из-за этого спагетти код с System.out.println который безумно режит глаза. Всякий ввод-вывод, вопросы пользователей и все остальные мухи - отдельно, код который выполняет бизнес дествие - должен быть отдельно

3. Насколько много должно быть процедур, насколько мельчить - это вопрос вкуса и ТЗ (его мы не видели).

всплывало исключение от java.NIOException, а когда пытался перехватить конкретно данное исключение
всплывало unreported exceprion от java.IOException и рекомендация системы перехватывать самый общий тип исключений, а не конкретное. Разорвать этот круг пока не получилось.

Ничего не понятно.
Т.к. java.NIOException при работе с файлами возникать не должно. Это сетевое исключение. По крайне мере, насколько я знаю и по доке/смыслу.
Что-то Вы не договариваете.

pesets
PetroNotC Sharp
Leonid Kudryavtsev,
>Интересная система счисления: 1, 12, 1234.
===)))))))))

да это просто нереализованная задумка - сначала хотел извратиться, но потом решил не усложнять


HabrПункт 9....
Не пишите спагетти код. Разложите все по классам, пакетам. Создайте где нужно интерфейсы, вынесите перечисления в ENUM , если необходимо.

"обычные разработчики" ( TM ) обычно ошибки кодируют без затей 1,2,3,4.... и так далее (лучше Enum)
Такую систему счисления 1,123,123456789 - вижу первый раз
...
Рейтинг: 0 / 0
нужен реинжиниринг короткого кода на java
    #40055987
pesets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev,
да кидал я задачу - 9ый пост на первой странице - огромная блин фотка получилась аж неудобно, но исправить не могу
...
Рейтинг: 0 / 0
нужен реинжиниринг короткого кода на java
    #40055990
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разорвать этот круг пока не получилось.

разбейти на процедуры.

В комментариях напишите:

Что данная процедура делает
Входные параметры
Выходные параметры
Какие ошибки и как процедура возврашает (раз мы про ООП, то лучше exceptions).
(хотя вариант с возвратом кода ошибки так же никто не отменял и он вполне законнен IMHO, но если про ООП - то лучше exceptions)

Почитайте как оформляются комментарии для JavaDoc. Можно даже JavaDoc сгенерить. Смысла нет, но поклонникам ООП может быть приятно.

Скорее всего жить станет легче ))) т.к. где там может возникнуть "круг" - мне вообще не представить.
...
Рейтинг: 0 / 0
нужен реинжиниринг короткого кода на java
    #40056000
pesets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev,

try { // создаем папку для файлов операций OPER
Files.createDirectory(Path.of(FoolOperPath));
} catch (IOException e) {
e.printStackTrace();
}

всплыло:

java.nio.file.FileAlreadyExistsException: D:\MyProjects\task1\OPER
at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:87)
at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103)

а когда перехватываю
try { // создаем папку для файлов операций OPER
Files.createDirectory(Path.of(FoolOperPath));
} catch (FileAlreadyExistsException e) {
e.printStackTrace();
}
получаю
D:\MyProjects\task1\src\com\home\Main.java
Error:(85, 42) java: unreported exception java.io.IOException; must be caught or declared to be thrown
Information:java: /D:/MyProjects/task1/src/com/home/Main.java uses unchecked or unsafe operations.
Information:java: Recompile with -Xlint:unchecked for details.
...
Рейтинг: 0 / 0
нужен реинжиниринг короткого кода на java
    #40056015
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,
+1
Код: java
1.
2.
3.
4.
5.
main(){
    читаемПараметры() ;
    создатьПапку() 
  ...... 
   
...
Рейтинг: 0 / 0
нужен реинжиниринг короткого кода на java
    #40056025
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С одной стороны - идиотское задание
С другой стороны - желание сделать хорошую программу для пользователя
в целом получилось - смесь ежа и колючей проволоки

IMHO
Разбить на процедуры (в обратном порядке)
1. Ф-ция генерирующая одну операцию, возврашает String

Код: java
1.
DateTimeFormatter formatDate = DateTimeFormatter.ofPattern("dd-MM-uuuu   hh:mm:ss:ms");


форматтер требуется между запусками, т.ч. код лучше вынести в отдельный класс и глобальные (в рамках класса) переменные/константы, типа форматера, создавать один раз в конструкторе/методе инициализации

2. Процедура генерирующая один файл

3. Процедура генерирующая набор файлов по списку ArrayList<String>

4. соответственно - процедура преобразующая конец командой строки args в список ArrayList<String>

ну и дальше, по необходимости

==============
По коду:

Код: java
1.
        if (System.getProperty("os.name").toLowerCase().contains("windows")){


Как уже сказали:

https://docs.oracle.com/javase/7/docs/api/java/io/File.html
File classstatic String pathSeparator
The system-dependent path-separator character, represented as a string for convenience.
static char pathSeparatorChar
The system-dependent path-separator character.
static String separator
The system-dependent default name-separator character, represented as a string for convenience.
static char separatorChar
The system-dependent default name-separator character.


NOTE: Только сейчас заметил, что используется класс File s , вместо нормального File. Похоже, поэтому, и NIO ошибка вылезает. Меньше знаний - меньше печали (что такое Files и как с ним работать - вот лично я не знаю)

Код: java
1.
2.
3.
4.
5.
            // проверка 1го параметра, существует ли файл, который указан в 1ом аргументе
            // должен существовать в каталоге запуска программы
            if (Files.notExists((Paths.get(FoolPathOfficesTxt)))) {
                ErrCount = 1;
            }


Вас это просили?
В задание про необходимость проверки ничего нет - в топку
Нет кода - нет ошибок

Ошибка и так будет, когда попытаемся открыть файл, которого нет.

Нечего переусложнять тестовая (б#$%) задание проверками и ф-ционалом о котором не просили. IMHO

Код: java
1.
2.
3.
                if (IsDigit <= 0) {
                    ErrCount = 12;
                } else {


Ну отрицательное - ну и пофиг. Тогда ничего и не создастся.
Правила проверки параметров в задании были? не было? - в топку

Код: java
1.
2.
3.
4.
5.
6.
            if (Files.notExists((Paths.get(FoolOperPath)))) {// если не существует папка OPER пытаемся ее создать
                try { // создаем папку для файлов операций OPER
                    Files.createDirectory(Path.of(FoolOperPath));
                } catch (IOException e) { // тут непонятно - то IOException? то NIOException?
                }
            }


В задании ничего про папку OPER не увидел.
Про необходимость ее создавать, если ее нет - так же.
Туда же. Т.е. - в топку

Код: java
1.
            if (ErrCount == 0) { // если  ошибок не обнаружено выполняем программу



if и простыня текста - за гранью добра и зла.

название переменной:
1. с большой буквы
2. с Count
за гранью добра и зла

Код: java
1.
                try { //начало читаем файл Offices.txt


Try знаем... это хорошо

Код: java
1.
2.
                } catch (IOException q) {
                }


ошибки тупо игнорируем?
даже не хочу думать, почему так
но просто игнорировать ошибки - лучше бы ее вообще не обрабатывали

Кроме того, дальше по коду будет try for resource. Почему здесь тогда просто try?

Или Вы знаете / умеете try с ресурсами, тогда его всюду и впихиваете. Или не умеете или не любите - тогда нафиг он вообще где-то. Делаете одностильно. Пусть ужасно, но однообразно

Файл в случае ошибки НЕ закрывается. (а вот это уже не предирка, а реальный косяк)

Чтение PosArrayList - явно напрашивается на отдельную процедуру/ф-цию

Нужна ли внутри нее обработка ошибок, вообще под вопросом. Ну не обработали ошибку, ну пролезет exception на уровень выше. Если использовать try с ресурсами, то все нормально (но у Вас тут не так)

IMHO Если код можно не писать - лучше его не писать. Нет кода - нет ошибок программиста. IMHO чисто мое

Код: java
1.
                Charset DefCharsetOper = Charset.forName("windows-1251");


Нигде про кодировки в задании ничего не было. Почему windows-1251 ?
Туда же - в топку

Код: java
1.
2.
                    if (Files.exists((Paths.get(FoolPathOperFiles)))) {
                        System.out.println("Измените параметр.Файл уже существует " + FoolPathOperFiles);


Или эту ситуацию мы считаем ошибкой - выдаем исключение и пошли все нафиг
Или это не ошибка. Вроде стандартное поведение - просто перезатираем файл. Чем оно не устраивает? Отличное от стандартного поведение в задание указано?

Туда же - в топку

Код: java
1.
IsDigit



Бл№;%.
Почему переменная Is Digit ?
И с заглавной буквы.

Код: java
1.
                            WriterOper.close();


Вроде же
try for resource
мне кажется в этом случае .close() лишний
поменять close на комментарий, что закрывать файл не нужно, т.к. try for resource

Note: проверить по документации! Я не уверен

Код: java
1.
2.
3.
                        } catch (IOException x) {
                            x.printStackTrace();
                        }


Вывели простыню на экран.... и ПРОИГНОРИРОВАЛИ ошибку
Замечательно
Или ошибки НЕ обрабатываем и просто их отправляем автоматом на уровень выше. Или как-то нужно обрабатывать. Раз в задании ничего не сказано - можно ничего и не делать.

При нормальном течении процесса - пытались закрыть файл. При ошибке - закрытия файла делать не стали. Опять раздвоение личности.

Туда же - в топку

Код: java
1.
2.
3.
WriterOper.flush();
                                String Progress = String.format("%d \r", i);
                                System.out.print(Progress);


Зачем flush?
System.out в рабочем коде? Вы серьезно?

Туда же - в топку


проще самому написать, чем пытаться чужой код перелопачивать.
половину делать не просили, не зачем было и делать.

IMHO & AFAIK

Обработка ошибок за гранью добра и зла. Лучше бы ее не было. Ну есть ошибка, ну выскочит стандарное сообщение в консоль. Обрабатывать ошибки в задании же не просили.

В main можно вообще было без всякого errCode обойтись. Отругаться в консоль и return.

IMHO

много знаний - много печали
не забывайте, что все "суета сует"

Проще надо быть. Особенно с тестовыми заданиями. Которые расчитаны на уровень студента/школьника.

IMHO
...
Рейтинг: 0 / 0
нужен реинжиниринг короткого кода на java
    #40056050
pesets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev,

спасибо, буду прорабатывать замечания.

"Правила проверки параметров в задании были? не было? - в топку"

теперь об излишествах.

само собой это ИМХО. ничего личного ))

как человек, который сам принимал на работу и программистов и админов,
а еще как пользователь софта разного уровня могу по своему опыту резюмировать следующее -
программер, который не проверяет пользовательский ввод и манкирует подобными мелочами - в результате добавляет себе и пользователям(клиентам) и снова себе отложенных во времени проблем по экспоненте.
Подобный подход в итоге привел к тому, что в банковском софте за невменяемо дикие для меня деньги поиск ничего не ищет, потому что лишний пробел затесался в конец строки ввода.
Кто то не сделал что то вроде alltrim () потому что это не было указано в техзадании? (тут у меня наливаются кровью глаза, а рука ищет парабеллум.)
Инкрементный поиск %;$#@ по справочнику не делается, потому что в тех задании нет, КАРЛ!!. А у юзера кровища из глаз хлещет просматривать простыни выпадающих списков в поиске нужного элемента.
(я щас инфаркт первый схвачу).

Так вот лично я бы принял на работу среднего медленного, но ОТВЕТСТВЕННОГО за свой код программера, чем очередного гения, которому лениво подумать о тех, кто будет пользоваться его софтом.

поэтому я и постарался продумать ошибки ввода параметров

Но, должен признать, что времена изменились. Когда я писал софт с 1997 по 2005
у меня было достаточно времени на написание софта и проработку многих "лишних" нюансов. Мне ставили сроки которые декларировал я. А сейчас сроки обозначает бизнес.
Когда тупо копируют западные методы менеджемента типа Agile и прочего прочего,
у разработчика часто нет времени на написание годного софта. Всеобщая тенденция успеть выпустить гуано(продадим сначала потом, если что, доработаем) вперед конкурента привела к тому, что мы все покупаем гуано во всех сферах, которое не дорабатывается.

еще раз спасибо за замечания
...
Рейтинг: 0 / 0
нужен реинжиниринг короткого кода на java
    #40056051
pesets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev,

растащило меня ))))

мой нач когда то давно давно давно сказала мне, что если пользователь один раз ввел какие то данные в систему, то если я что то напишу такое, что ему придется второй раз вводить одни и те же данные, то она лично меня повесит за сараем.
и я считаю, что она права уже полтора десятка лет.

и когда я вижу как жена в страховой компании (не мелкой) работает в двух системах вводя одни и те же данные и у них это называется миграцией мне просто хочется самому повеситься.
...
Рейтинг: 0 / 0
нужен реинжиниринг короткого кода на java
    #40056055
pesets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev,

просьба не счесть за наглость, можно еще вопрос ?
по второй задаче не подскажете какой лучше компонент/коллекцию выбрать с точки зрения того, что бы запихнуть в него файл с операциями из первой задачи и с малой кровью сделать нужные группировки и подсчеты сумм в разрезе групп ?


я могу это сделать парой строк на sql, но тут sql не предполагается ))).
когда то были красивые дрова ODBC , которые позволяли писать sql запросы к плоским структурированным тхт файлам и это было здорово. Сейчас ничего такого не смог найти.

а еще даже в самых ранних версиях фокспро была так называемая макроподстановка - переменной присваивались строки кода, которые потом выполнялись как код. Можно было связать переменную с полем в БД, писать в рантайме код в текстовых полях ДБ, менять его и выполнять без перекомпиляции приложения.
увидел в Java лямбда выражения - это попытка сделать что то аналогичное ?
...
Рейтинг: 0 / 0
нужен реинжиниринг короткого кода на java
    #40056060
olegeos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да не нужен здесь sql.
Зачем так много static???
Это зачем?
Класс вроде Main называется.
Код: java
1.
2.
3.
  static class linedata {

    }


Уже несколько раз порекомендовали вынести все действия по методам.
В
Код: java
1.
2.
3.
 public static void main(String[] args ){
// здесь вызвать главный метод (или рабочий)
}



Чисто предположение, задание это то что прописано в комментариях(вывод в консоль)?
Каждое действие в отдельный метод, так легче все это отладить/изменить/доработать/перехватить исключения и т.д.
...
Рейтинг: 0 / 0
нужен реинжиниринг короткого кода на java
    #40056062
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pesets
Leonid Kudryavtsev,

по второй задаче не подскажете какой лучше компонент/коллекцию выбрать с точки зрения того, что бы запихнуть в него файл с

а еще даже в самых ранних версиях фокспро была так называемая макроподстановка - переменной присваивались строки кода, которые потом выполнялись как код.
Можно было связать переменную с полем в БД, писать в рантайме код в текстовых полях ДБ, менять его и выполнять без перекомпиляции приложения.

увидел в Java лямбда выражения - это попытка сделать что то аналогичное ?


Берите ArrayList, работает быстро.
Для работы с парсингом текстового файла можете использовать тот же самый Scanner.
Создайте класс типа pojo (класс с тем минимумом полей , которые нужны вам для расчета сумм. Так как вы долго и упорно писали
на SQL представьте себе какую нибудь итоговую таблицу с столбцами из которой вам наиболее удобно будет делать группировку и сортировку. Представили? Теперь создавайте класс java с таким же типами и набором полей.)
При обработке текстового файла, снимайте значение каждой строки и передавайте в соответствующие поля pojo.
Его (экземпляр класса pojo c спарсенными данными) и запихивайте в ArrayList как будто бы это одна строка таблицы /строка из текстового файла .

После наполнения коллекции ,все что угодно, хоть в хвост, хоть в гриву. Сортируйте пузырьком к примеру, циклом можно посчитать суммы ,среднее, и проч.

лямбда это не попытка, это уже давно реализованная функция языка:)
...
Рейтинг: 0 / 0
нужен реинжиниринг короткого кода на java
    #40056065
pesets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
olegeos,
задача на первой странице 9-ый пост
...
Рейтинг: 0 / 0
нужен реинжиниринг короткого кода на java
    #40056066
pesets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Сергей Лалов#22298499]
pesets
Leonid Kudryavtsev,

лямбда это не попытка, это уже давно реализованная функция языка:)


ну вот чесслово - слабое подобие левой руки по сравнению с фоксовской макроподстановкой бородатых годов.
но я понимэ - фокс все таки интерпретатор
...
Рейтинг: 0 / 0
нужен реинжиниринг короткого кода на java
    #40056067
pesets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей Лалов
pesets
Leonid Kudryavtsev,

по второй задаче не подскажете какой лучше компонент/коллекцию выбрать с точки зрения того, что бы запихнуть в него файл с

а еще даже в самых ранних версиях фокспро была так называемая макроподстановка - переменной присваивались строки кода, которые потом выполнялись как код.
Можно было связать переменную с полем в БД, писать в рантайме код в текстовых полях ДБ, менять его и выполнять без перекомпиляции приложения.

увидел в Java лямбда выражения - это попытка сделать что то аналогичное ?


Берите ArrayList, работает быстро.
Для работы с парсингом текстового файла можете использовать тот же самый Scanner.
Создайте класс типа pojo (класс с тем минимумом полей , которые нужны вам для расчета сумм. Так как вы долго и упорно писали
на SQL представьте себе какую нибудь итоговую таблицу с столбцами из которой вам наиболее удобно будет делать группировку и сортировку. Представили? Теперь создавайте класс java с таким же типами и набором полей.)
При обработке текстового файла, снимайте значение каждой строки и передавайте в соответствующие поля pojo.
Его (экземпляр класса pojo c спарсенными данными) и запихивайте в ArrayList как будто бы это одна строка таблицы /строка из текстового файла .

После наполнения коллекции ,все что угодно, хоть в хвост, хоть в гриву. Сортируйте пузырьком к примеру, циклом можно посчитать суммы ,среднее, и проч.

лямбда это не попытка, это уже давно реализованная функция языка:)


искренний сенкс хоть понял куда двигать
...
Рейтинг: 0 / 0
нужен реинжиниринг короткого кода на java
    #40056071
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pesets

ну вот чесслово - слабое подобие левой руки по сравнению с фоксовской макроподстановкой бородатых годов.
но я понимэ - фокс все таки интерпретатор


В основе лямбды лежат замыкания. В sql замыканий нет. (имею в виду не циклические ссылки с ошибкой, а то сейчас пойдёт описание возможных традиционных коротышей ) а именно понятие замыкание. Наверное это в интерпретации sql что то близкое к оконным функциям. Да, наверное так.

Из всех ЯП java и sql это пожалуй самые диаметрально противоположные друг к другу)
...
Рейтинг: 0 / 0
нужен реинжиниринг короткого кода на java
    #40056076
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,

Это олдовый кодер из тех времён, когда во всю юзали битовые маски. Он вам, ребятишкам, всем еще покажет!
...
Рейтинг: 0 / 0
нужен реинжиниринг короткого кода на java
    #40056077
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
>Интересная система счисления: 1, 12, 1234.
===)))))))))

Это битовая маска на минималках.
...
Рейтинг: 0 / 0
нужен реинжиниринг короткого кода на java
    #40056080
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pesets,

Итак из обещанных двух страниц глумления не набралось и половины, что само по себе не плохо.
Продолжаем:)


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
PosName = PosName.replaceAll("[^\\da-zA-Zа-яёА-ЯЁ ]", "").trim();
//По этой регулярке сразу видно - тёртый калач.

System.out.println("Краткая справка:");
//Такое лучше засунуть в массив, потом перебрать его в цикле и выплюнуть по строчке 
(сделать соответствующий метод) чтобы у эстетов не страдало чувство прекрасного

if (Files.notExists((Paths.get(FoolPathOfficesTxt)))) {
                ErrCount = 1;
}

//В общем-то можно сразу выругаться и сделать return. Дальнейшая работа 
не имеет смысла в этом и остальных случаях.

if (ErrCount == 0) { // если  ошибок не обнаружено выполняем программу
//и в итоге вот этот if можно убрать

//вместо
PosArrayList = new ArrayList();
//сделать
PosArrayList = new ArrayList<String>();
И это будет массив строк, а не массив чего-то (не придётся делать касты).


PosArrayList.removeAll(Arrays.asList(null, ""));
//Перебирать готовый массив на обязательно. Можно проверять, что строчка 
пустая еще на этапе заполнения массива.

LocalDateTime CurrDateTimeLow = LocalDateTime.of(CurrDateTime1.getYear(), 1, 1, 0, 0, 0, 0).minusYears(1);
//надо или комментарий или заюзать какой-нибудь SimpleDateFormat как советовали выше.
Long CHisloMinSecLow = CurrDateTimeLow.toEpochSecond(TimeZone);
//Слишком разухабистое название, я бы назвал просто timeStampMin и timeStampMax

Charset DefCharsetOper = Charset.forName("windows-1251");
//такое лучше выносить в параметры или константы

for (int countArgs = 2; countArgs < NumParams; countArgs++) {
//Вот это - лучше разбить на две стадии - создание файлов и заполнение. Может быть 
так, что файл уже есть/занят и тогда код свалится доработав частично. Переписывать 
файл или нет по дефолту - вопрос отдельный, лучше тоже вынести в константу
int Count1 = NumsOper;
//Count1 - в общем-то не нужен.

DateTimeFormatter formatDate = DateTimeFormatter.ofPattern("dd-MM-uuuu   hh:mm:ss:ms");
//Будет постоянно происходить реюз и вызов фабрики со сборкой, лучше вынести за цикл.

double RandomSumOper = Math.random() * (AmountUp - AmountLow) + 1 + AmountLow;
//Чем каждый раз это делать, лучше сделать метод типа double rng(from, to)

LineData = String.format("%d; %s; %s ; %s; %.2f; \n", i + 1, POS, RandomDate, NomerOper, RandomSumOper);
//Даа. Молодые так не умеют. Они просто скалывают строку:)
//\n - разделитель не видновый (хоть кодеровка и вендовая). Надо или использовать System.lineSeparator() 
или куда-то явно это вынести

WriterOper.flush();
//Делать, наверное, не обязательно в цикле.

String Progress = String.format("%d \r", i);
//Тут лучше сделать общий прогресс в процентах, а не записей по файлу. 
//(а еще сделать полоску и скорость и сколько времени осталось, но это уже шик)
//В мануал надо добавлять рабочие примеры. 



В целом по коду:
1. Как сказали выше прочитать жабее соглашение по написанию кода - назавния класса с заглавной буквы, полей и переменный со строчной.
2. Кучу когда разбить на мелкие методы
Для данного ТЗ этого хватит. Городить что-то с ООП ради ООП я считают тут излишне. Хотели бы оопоты дали бы тз, где это уместно.

По поводу самого ООП (и ради наброса) у каждого своё мнение не только относительно его нужности, но и (о ужас) относительно того, как правильно выстраивать иерархию классов. Одни будут считать, что квадрат должен наследоваться от ромба, а другие, что ромб от квадрата. И пока ты 10 раз перепишешь свой лапшекод они еще будут сраться.

Кстати вообще не понимаю, что на дядку наехали. Ладно, бы очередной студень, который нихрена не хочет делать, а хочет сдать лабу или работу за 100500 денег.
...
Рейтинг: 0 / 0
нужен реинжиниринг короткого кода на java
    #40056081
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pesets,

По второй задаче, видимо хотят, велик, который будет делать sum с group by.
Напрашивается суммирование в HashMap<String, HashMap<Integer, BigDecimal> (за double для денег тут шкуру спустят) Первый ассоц. массив - по точкам, в нём массивы по дням (от начала Эпохи) с суммой или pojo с точкой, днём и суммой (чтобы легче было делать сортировку). Потом map перегнать в какой-нибудь arrayList и отсортировать.
...
Рейтинг: 0 / 0
нужен реинжиниринг короткого кода на java
    #40056093
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов,
pojo +1
crutchmaster
PetroNotC Sharp
>Интересная система счисления: 1, 12, 1234.
===)))))))))

Это битовая маска на минималках.
))) я боялся этого.
Очень сексуально))))
...
Рейтинг: 0 / 0
25 сообщений из 249, страница 2 из 10
Форумы / Java [игнор отключен] [закрыт для гостей] / нужен реинжиниринг короткого кода на java
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]