- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
QString generateGuid( const std::string &tDeviceSerial,
const std::string &nDatetime, const std::string &licnum,
const char *violation )
{
std::ostringstream s;
s << tDeviceSerial;
s << nDatetime;
s << licnum;
s << violation;
QCryptographicHash hash( QCryptographicHash::Md5 );
hash.addData( QByteArray( s.str().c_str() ) );
QByteArray result = hash.result();
return convToHex( (unsigned char*)result.data(), result.size() );
}
Оно, конечно, работает. Но разобраться в таком коде....
RaZeR 11.05.2011 15:31 # −1
Они насилуют гуиды!
absolut 11.05.2011 15:46 # 0
Vindicar 11.05.2011 22:43 # −1
guest 12.05.2011 14:24 # +2
Слепили строчку - получили для нее МД5-й хэш - вернули его в виде hexadecimal. Все просто, понятно, линейно.
Я пока только одно говнокодство вижу: полученная строчка - это ни разу не ГУИД, который, как известно, несколько длиннее и имеет фиксированную структуру. Да и не должны ГУИДы быть одинаковыми при одинаковых входных данных функции - они же все-таки глобально уникальные.
Впрочем, это все лирика. Ну, назвал функцию неправильно пацан, написал GUID вместо Hash - что ж теперь, всем смеяться полчаса?
guest 12.05.2011 14:53 # 0
Нет и еще раз нет. Это даже в чем-то неполиткорректно: смеяться над крестоебами. Они же, бедняши, совсем как дети-имбецилы.
panter_dsd 12.05.2011 15:37 # 0
1. Нахрена ostringstream?
2. нахрена объект QCryptographicHash, если у него есть статическая функция?
3. Нахрена convToHex, если QByteArray это сам умеет.
guest 12.05.2011 16:42 # +2
Меня на такие выводы толкает упорное использование контейнеров из STL. Кутишные контейнеры очень даже удобны и приятны в использовании, поэтому "гибриды" с std::string и прочими встречаются во всяких интерфейсных прокладках. Ну или в коде зеленых новичков в Qt. :)
> 1. Нахрена ostringstream?
Человек не привык использовать вкусности QString и юзает его как std::string. В общем случае, чтобы получить строку, слепленную из параметров произвольного типа, приходится пихать все в ostringstream.
Пацан, конечно, перемудрил слегка - у него кругом строки, можно было в одну тупо слить конкатенацией.
С другой стороны, его можно понять - мало ли как мысль у него шла. Может, он сначала планировал в функцию дату-время как число передавать, написал с ostringstream, а потом власть в стране переменилась и дату-время он стал передавать в виде строки.
Обычная ситуация.
2. нахрена объект QCryptographicHash, если у него есть статическая функция?
Если парень новичок в Кути, он мог и не заметить такой тонкости. Нашел пример использования класса в документации и сделал так же. Простительно и не страшно.
3. Нахрена convToHex, если QByteArray это сам умеет.
Для человека, не работавшего раньше с Кути, QByteArray практически никак не ассоциируется со строками. Он просто не знал, куда смотреть. Да даже если он и нашел описание QByteArray::toHex(), скорее всего, пожал плечами и пропустил - ему же строки нужны в результате, а не массивы байтов.
В этом смысле QCString из "старого" Qt был попроще для новичка. По крайней мере не было лишнего барьера в понимании, что это как-то относится к строкам.
Резюмируя: код, конечно, на троечку, но и не откровенное говно. Так, малость попахивает.
Пацана заставить разобраться с QByteArray и QString, показать, как принято в кутях использовать статические функции - и все у него будет хорошо. :)
panter_dsd 12.05.2011 18:08 # 0
Пытался. :( Там все глухо. Я ему сегодня втолковывал, что if (string.isEmpty () ) лучше, чем if (string != "") - он так и не согласился.
guest 13.05.2011 11:01 # +4
Таких нужно учить административными методами: за string!="" - лишать премии.
А начнет возбухать - попросить его рассказать в подробностях, как именно работает его вариант проверки, и если он не понимает, что там создается временный объект - пригрозить увольнением за несоответствие. Потому как это основы.
TheHamstertamer 15.05.2011 19:36 # 0
бывает в сотни раз хуже
guest8 08.04.2019 20:45 # −999
guest8 08.04.2019 21:05 # −999
guest8 08.04.2019 22:05 # −999
guest8 08.04.2019 22:11 # −999
guest8 09.04.2019 10:36 # −999
guest8 09.04.2019 10:44 # −999