Придумал прогу, а она работает с первого раза КАЙФ
1324
35
Написал я пару лет назад авторизатор текста, но такой говнокод там был... В общем, улучшить я прогу так и не смог. А хотел добавить новых алгоритмов...
Потом долго не мог придумать структуру новой версии проги, в которой алгоритмы будут на изичах добавляться.
В итоге придумал это:
Запрогал тестовую версию, И ОНО РАБОТАЕТ! С ПЕРВОГО РАЗА! Я впервые написал что-то сложно и крутое (для меня) с первого раза. Вы не предстьавляете, какой это кайф...
типа я могу сделать любое число шагов алгоритма, любое число самих агоритмов, запускать всё это в любом порядке и совершенно не меняя код (только добавляя новый в новых классах причём). В итоге я к диплому просто завалю инст всеми вариациями всех возможных алгоритмов КАЕФ
п.с. просто делюсь радостью
DarthGandalf сказал(а):↑Это не то что говнокод, это во первых читать блевотно ( я про код), табуляция не? За блок-схемы вот лайк, очень хорошо если ты понимаешь как строить алгоритм своей программы.
Нажмите, чтобы раскрыть...Это линейный алгоритм, какая в нём может быть табуляция? Для чего? Для укачки? Чтобы всё непонятно стало?
Caribu сказал(а):↑Етить тут интерфейсов. Ими прям обмазаться можно
Нажмите, чтобы раскрыть...4 интерфейса.
4 штучки внизу слева это называются интерфейсами, но фактически они несут не программный (они абсолютно одинаковые и более того - пустые), а человечий-организационный смысл. Они показывают мне, какая часть алгоритма там должна быть. Ибо большинство алгоритмов делится на эти части. И чтобы у меня не было соблазна запихать всё в один суперкласс - сделал такую разбивку.
Kujivunia сказал(а):↑4 интерфейса.
4 штучки внизу слева это называются интерфейсами, но фактически они несут не программный (они абсолютно одинаковые и более того - пустые), а человечий-организационный смысл. Они показывают мне, какая часть алгоритма там должна быть. Ибо большинство алгоритмов делится на эти части. И чтобы у меня не было соблазна запихать всё в один суперкласс - сделал такую разбивку.
Нажмите, чтобы раскрыть...А если нужно будет больше частей добавить, ты еще интерфейсов наплодишь?
AMDkrolyan сказал(а):↑
где ты там увидел блок схему ?
Нажмите, чтобы раскрыть...ну это некое ее подобие, хотел опустить ТСа, но понял что лучше уж хоть за что-то похвалить, ведь если челу нравится, зачем опускать его на дно?
Kujivunia сказал(а):↑Это линейный алгоритм, какая в нём может быть табуляция? Для чего? Для укачки? Чтобы всё непонятно стало?
Нажмите, чтобы раскрыть...то есть по твоему надо на нее забить совсем? Лично я такое на код-ревью даже смотреть не буду, объяснять про то насколько важно иметь привычку писать хорошо читаемый код тем более не буду.
Kujivunia сказал(а):↑А хотел добавить новых алгоритмов...
Потом долго не мог придумать структуру новой версии проги, в которой алгоритмы будут на изичах добавляться.
Нажмите, чтобы раскрыть...Из твоей диаграммы я ничего не понял, но предполагаю что у тебя много алгоритмов и в программе можно выбрать какой использовать.
Если так то используй паттерн абстрактная фабрика
Не совсем понимаю зачем нужна схемка, разве что бы оценить зависимости, но тут вроде бы всё абсолютно прямолинейно. Если бы от таких схемок был какой-то практический толк, мы бы уже все пользовались визуальным програмированием аля анриловские ноды, но нет же, не пользуемся.
Ну а вообще отлично, что всё заработало. Молодец!
pochemyzamenya сказал(а):↑Из твоей диаграммы я ничего не понял, но предполагаю что у тебя много алгоритмов и в программе можно выбрать какой использовать.
Если так то используй паттерн абстрактная фабрика
Нажмите, чтобы раскрыть...Если я правильно понимаю, у меня что-то среднее между фабрикой, командой и говнокодом.
А в диагграмме вродь всё ясно:
IAlgorithmStep это интерфейс для любой части алгоритма, для любого его шага. Он имеет один метод: Execute(data)
Через data и идёт работа алгоритма и обмен данными между шагами и внешним миром.
В наследниках у него не только шаги алгоритма, но и IFullAlgorithm - интерфейс класса-макрокоманды(?). Я могу наплодить экземпляры шагов алгоритма, сделать .EnqueueStep(stepN);, а потом вызывать их по одному (мало ли, вдруг понадобится?) или все сразу: .Execute(data);
Ну остаётся только АлгоритмДата и Дистанция. Первое - это исходный текст, промежуточные данные и выход для алгоритма анализа текста. Второе - это сравнение анализа двух разных текстов.
DarthGandalf сказал(а):↑то есть по твоему надо на нее забить совсем? Лично я такое на код-ревью даже смотреть не буду, объяснять про то насколько важно иметь привычку писать хорошо читаемый код тем более не буду.
Нажмите, чтобы раскрыть...Если ты не знаешь ни одного правила, по кторому здесь нужна табуляция, но "она нужна смотреть не буду без неё", то зачем вообще писать?
Табуляция определяет вложенность алгоритма.
У меня алгоритм строго линейный.
Более того, VS2019 сама ставит табуляцию.
Цитата:public void Execute(IAlgorithmData data) { DataTEST dt = (DataTEST)data; for (int i = 0; i < dt.normalized.Length - 1; i++) { dt.tokens.Add(dt.normalized.ToString() + dt.normalized.ToString()); } Console.Write("Tokens: "); foreach (var item in dt.tokens) { Console.Write(item+" "); } Console.WriteLine(); }Нажмите, чтобы раскрыть...
7even7een сказал(а):↑таблуяция, блок-схемы чел о чем ты?))) Забей. ты же вообще никто
Нажмите, чтобы раскрыть...а ты тогда кто? Если раз уж я никто? С -62 зачем ты пишешь клоун?
Kujivunia сказал(а):↑Если я правильно понимаю, у меня что-то среднее между фабрикой, командой и говнокодом.
А в диагграмме вродь всё ясно:
IAlgorithmStep это интерфейс для любой части алгоритма, для любого его шага. Он имеет один метод: Execute(data)
Через data и идёт работа алгоритма и обмен данными между шагами и внешним миром.
В наследниках у него не только шаги алгоритма, но и IFullAlgorithm - интерфейс класса-макрокоманды(?). Я могу наплодить экземпляры шагов алгоритма, сделать .EnqueueStep(stepN);, а потом вызывать их по одному (мало ли, вдруг понадобится?) или все сразу: .Execute(data);
Ну остаётся только АлгоритмДата и Дистанция. Первое - это исходный текст, промежуточные данные и выход для алгоритма анализа текста. Второе - это сравнение анализа двух разных текстов.
Если ты не знаешь ни одного правила, по кторому здесь нужна табуляция, но "она нужна смотреть не буду без неё", то зачем вообще писать?
Табуляция определяет вложенность алгоритма.
У меня алгоритм строго линейный.
Более того, VS2019 сама ставит табуляцию.
Нажмите, чтобы раскрыть...и тебе было сложно прикрепить скрин с VsCode? Ты делишься с людьми своей работой, потрудись хотя бы сделать это более читабельным или не пости вообще
maxutor2 сказал(а):↑Этот вброс же уже был год назад 1:1 и от тебя же.
Да и вообще в последний месяц вижу нереально много копипаст прошлых темок, вы боты адского?
Нажмите, чтобы раскрыть...ссылку дай. если я год назад уже решил эту проблему, то там 100% уже решены все проблемы которые я щас решаю.
DarthGandalf сказал(а):↑а ты тогда кто? Если раз уж я никто? С -62 зачем ты пишешь клоун?
и тебе было сложно прикрепить скрин с VsCode? Ты делишься с людьми своей работой, потрудись хотя бы сделать это более читабельным или не пости вообще
Нажмите, чтобы раскрыть...Ты издеваешься? Я тебе текст скинул текстом, так чего же боле? Я что, додик что ли, чтобы кидать ТЕКСТ КАРТИНКОЙ?
И я не делюсь работой, я показываю, где должна стоять табуляция, и как её сама ставит вс2019
Kujivunia сказал(а):↑ссылку дай. если я год назад уже решил эту проблему, то там 100% уже решены все проблемы которые я щас решаю.
Ты издеваешься? Я тебе текст скинул текстом, так чего же боле? Я что, додик что ли, чтобы кидать ТЕКСТ КАРТИНКОЙ?
И я не делюсь работой, я показываю, где должна стоять табуляция, и как её сама ставит вс2019
Нажмите, чтобы раскрыть...опубликуй такое что-нибудь на говнохабре, я посмотрю что тебе скажут, я просто дал фидбек, я не для того чтобы спорить с тобой и что-то доказывать или объяснять тебе, ты можешь принять это и учесть либо помолчать
1ncr3dible сказал(а):↑в чем польза этого алгоритма(алгоритмов)?
Нажмите, чтобы раскрыть...В том, что раньше мой код выглядел так:
Очевидно, что изменить или, упаси Боже!, добавить новый алгоритм было решительно невозможно.
Или ты про то, какой алгоритм я запихаю внутрь? Ну, авторизация текста - це круто.
Или, цитирую самого себя:
Цитата:Мне видятся следующие сферы практического применения
библиотеки авторизации текста, а именно:● Развлекательная — пользователю будет любопытно узнать, ктексту какого из известных авторов ближе предложенный имтекст.● Практическая — использование результатов работыавторизатора текста в качестве одного из аргументов в вопросеавторизации текста, например, при выяснении авторствакраткого анонимного сообщения или спорного авторствакрупного литературного произведения.● По авторскому профилю текста, при наличиисоответствующей выборки, можно классифицировать текст посамым различным критериям, таким как жанр, стиль речи,эмоциональная окраска, временная эпоха написания, etc.Нажмите, чтобы раскрыть...
Kujivunia сказал(а):↑В том, что раньше мой код выглядел так:
Очевидно, что изменить или, упаси Боже!, добавить новый алгоритм было решительно невозможно.
Или ты про то, какой алгоритм я запихаю внутрь? Ну, авторизация текста - це круто.
Или, цитирую самого себя:
Нажмите, чтобы раскрыть...скриншот не грузит.
интересные вариации авторизации текста, было бы интересно посмотреть на код, если получится у тебя реализовать
Тема закрыта
-
ЗаголовокОтветов ПросмотровПоследнее сообщение
-
Сообщений:6
Просмотров:6
-
Сообщений:18
Просмотров:24
-
Сообщений:7
Просмотров:8
-
Сообщений:9
Просмотров:10
-
Сообщений:23
Просмотров:27