Reflector
|
Posted: Wed Oct 20, 2010 16:45 Post subject: |
|
|
CaptainFlint wrote: |
Во-первых, я ненавижу STL. Хоть и мощный, но крайне неудобный в использовании (не говоря уж о километровых сообщениях об ошибках, чуть что не так). Во-вторых, я совсем не уверен, что vector сможет жить в программе сам по себе, ничего больше не затащив вместе с собой из STL. В этом случае вряд ли получится экономия. В-третьих, я разрабатывал с учётом возможного отказа от CRT, что в случае использования STL вызвало бы дополнительные проблемы.
|
Добавил в твой проект vector, размер бинарника вырос на 8к при том, что Array я не удалял, т.е. реально будет еще меньше. Это много? Не думаю... В чем неудобство тоже не понятно. Допустим ты пишешь:
Array<int> abc;
abc.Append(10);
if (abc.GetLength() == 0) ...
чем это код сложнее такого?
vector<int> abc;
abc.push_back(10);
if (abc.empty()) ...
Очевидно он ничем не сложнее, более функционален и при необходимости я легко могу заменить vector на list или map, собственная реализация которых была бы уже не такой простой, как твой Array. Почему для тебя это не очевидно? Видимо ты сначала изучал чистый С потому плохо знаешь С++ и его библиотеки. В частности это видно по использования таких чисто сишных особенностей, как передача void в качестве аргументов функций и использование typedef при определении структур и перечислений. Ты пишешь на С++ так, будто это С, игнорируя все рекомендации ведущих С++ программистов. К чему это приводит? К функциям на 800 строк внутри которых огромное количество мест с потенциальными утечками памяти. Например, когда прога выдает "Configuration file not found!", то утекает 2048 + 2048 + 12 + 20 + 2048 + 2048 байт памяти. Если я возьму любую ошибку выдаваемую выше нее в текущем блоке кода, а это:
Memory allocation error!
Failed to find myself
Too long INI file name!
Too long path to INI!
COMMANDER_INI variable undefined!
Too long path to myself!
то везде будут утечки памяти. Естественно ниже они буду тоже, но многих их них можно было бы избежать используя string и исключения, еще и код бы стал короче, надежнее, понятнее, ты бы не думал будут строки больше 1024 символов или нет и... Да, и бинарник бы опять стал больше, это ужасно  |
|