LINUX.ORG.RU
ФорумTalks

Специалистам по C или C++


0

3

Вопрос на засыпку. Можно ли с достаточностью утверждать, что приведенный по ссылке ниже кусок кода на C++ является индусским?

http://pastebin.com/h18t1tNg

(Это не дословное копирование)

Upd. Давайте посылать ему патчи :)



Последнее исправление: ttnl (всего исправлений: 1)
Ответ на: комментарий от vurdalak

Я бы обрабатыват все это в свитче. Хотя по этому куску кода мало что можно сказать (не зная назначения), но даже по стилю видно индусскость.

flareguner
()

тут стоило бы вынести часть кода в отдельную функцию, которая бы возвращала константную строку, которую уже и использовать для CALL_String_ImportFromBuf

aho
()

Возможно было бы логичней строки сообщений типа «Virus» загнать в массив, а константы аля ENGINE_DETECT_TYPE_VIRWARE использовать в качестве индексов. И просто вытаскивать строку по индексу. Хотя без контекста тут сразу не скажешь. Но в целом не сказал бы, что это сильно жуткий код. Вполне нормально.

unikoid
()

Код, написанный методом copy-paste, можно считать индусским с достаточно большой вероятностью. Это из касперского, да?

Deleted
()

Кусок рядом

http://pastebin.com/ZSczpQBP

Странно, что не расписали последний пункт, как первые два

ttnl
() автор топика

а в лаборатории касперского быдлокодеры P_P

Klayman
()
Ответ на: комментарий от flareguner

> Так бы сделал я

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

aho
()
Ответ на: комментарий от flareguner

> А что плохого?

тут достаточно указателя, код будет выглядеть практически одинаково, но работать быстрее

aho
()

Венгерская нотация!!!111111 пыщьпыщь

Gorthauer
()

Обычный код. Можно конечно создать массив со строками где ключами будут эти константы, но в сущности это не нужно.
Да и хз как этот код был написан, может раньше оно по разному вызывало функции. Ведь тогда работает неписанное правило не рефракторить код до первой кровавой слезы при виде рабочего кода.

Tark
()
Ответ на: комментарий от Legioner

>Вполне читаемый код. Претензии по мелочам есть, но в целом нормально.

А вот и быдло^Wиндусы в тред пожаловали.

Led
()
Ответ на: комментарий от Led

>А вот и быдло^Wиндусы в тред пожаловали.
Торрент файл с утекшими кодами весит около 300 мег. Как вы думаете, критична ли эта вещь?

Tark
()
Ответ на: комментарий от Tark

> Можно конечно создать массив со строками где ключами будут эти константы

я так понимаю, вы про ассоциированный (или как правильно?) массив? т.е. не тот, где выборка будет по индексу, а у которого реально используется пара: ключ-значение?

Да и хз как этот код был написан, может раньше оно по разному вызывало функции

значит было в какой-то момент переписано и делалось «по-быстрее» а не «логичнее и красивее»

gunja
()
Ответ на: комментарий от gunja

>я так понимаю, вы про ассоциированный (или как правильно?) массив? т.е. не тот, где выборка будет по индексу, а у которого реально используется пара: ключ-значение?
Нет, ENGINE_DETECT_TYPE_VIRWARE - это числовые константы, то есть за индекс сойдут.

значит было в какой-то момент переписано и делалось «по-быстрее» а не «логичнее и красивее»

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

Tark
()
Ответ на: комментарий от Tark

> Нет, ENGINE_DETECT_TYPE_VIRWARE - это числовые константы, то есть за индекс сойдут

а если это что-то вроде определений

1<<n 1<<m 1<<t

то выделять такого размера массив с пустыми по-большей части указателями?

хотя да, исходя из того, сколько вопросов появляктся в случае «а как лучше сделать» - сделано хорошо.

gunja
()
Ответ на: комментарий от gunja

>то выделять такого размера массив с пустыми по-большей части указателями?
Ну вероятнее что эти константы будут последовательны, это же просто типы вредоносных программ.

Tark
()
Ответ на: комментарий от Tark

>Ну вероятнее что эти константы будут последовательны, это же просто типы вредоносных программ.

Нет, они не последовательны, но там есть массив-словарь.

ttnl
() автор топика
Ответ на: комментарий от flareguner

Вот самый Ъ-вариант:

#define ENGINE_DETECT_TYPE_VIRWARE 	1
#define ENGINE_DETECT_TYPE_TROJWARE 	2
#define ENGINE_DETECT_TYPE_ADWARE	3
#define ENGINE_DETECT_TYPE_PORNWARE	4
#define ENGINE_DETECT_TYPE_RISKWARE	5
#define ENGINE_DETECT_TYPE_MALWARE	6

#define ENGINE_DETECT_TYPE_VIRWARE_STR 		"Virus"
#define ENGINE_DETECT_TYPE_TROJWARE_STR 	"Trojan"
#define ENGINE_DETECT_TYPE_ADWARE_STR		"Adware"
#define ENGINE_DETECT_TYPE_PORNWARE_STR		"Pornware"
#define ENGINE_DETECT_TYPE_RISKWARE_STR		"Riskware"
#define ENGINE_DETECT_TYPE_MALWARE_STR		"Malware"



#define ENGINE_TYPE_STR(type) type##_STR




error =
CALL_SYS_ObjectCreateVeryQuick (this, &str, IID_STRING, PID_ANY, SUBTYPE_ANY);
if (PR_SUC (error) && out_size)
  {
    string type = ENGINE_TYPE_STR(*out_size);
  }

Хотя самый Ъ - сделать на таблице.

bk_
()
Ответ на: комментарий от mono

> создание временной строки, когда она совершенно не требуется - это еще хуже копипаста.

Копипаст хуже, просто ты этого еще не понимаешь :)

tailgunner
()

да не. просто студенческо/говнокодский.

andrew_tch
()

ктати, это не касперсого исходники? )

andrew_tch
()
Ответ на: комментарий от bk_

Не конпелировал, но недоумеваю

>string type = ENGINE_TYPE_STR(*out_size);

Эта ж хрень должна в компайл-тайм раскрыться в

string type = *out_size_STR;

Нафиг?

staseg
()

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

Loki13 👍👍👍👍
()
Ответ на: комментарий от Loki13

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

Чем тебя не устроил вариант, когда в switch просто вычислялась строка?

tailgunner
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.