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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.