Тема: Less Toolkit
Показать сообщение отдельно
Старый 27.01.2009, 09:50   #20 (Ссылка на пост)
Marchello
Местные мы
 
Аватар для Marchello
Пол:
 
Активность Longevity
0/20 17/20
Today Сообщения
0/5 ssssss509
Благодарил(а): 457
Благодарили 620 раз в 179 постах
Галерея: 0
Вес репутации: 23 Marchello известное всем имяMarchello известное всем имяMarchello известное всем имяMarchello известное всем имяMarchello известное всем имя
Я как любитель gamedev-а всегда склонен к быстродействию кода, поэтому стараюсь обращать внимание на изъяны в этом.
Поэтому методы:
Код:
virtual String      GetPath( void ) const = 0;
virtual ArrayString GetGroups( void ) = 0;
virtual ArrayString GetEntries( void ) = 0;
virtual String      GetFirstGroup( void ) = 0;
virtual String      GetNextGroup( void ) = 0;
// и т.д.
у меня вызывают некоторые волнения (думаю понятно почему), а особенно те которые возвращают ArrayString.
ИМХО лучше возвращать const String& или const String* (это предпочтительней).
А если же предполагается возвращать объекты из стека метода,
то можно даже так написать:
Код:
void GetEntries( ArrayString* s)
{
  // тут мы заполняем сразу 's' и никаких стековых объектов
}
выглядит чуть уродливей но эффективно.

И еще на счет массива, у тебя все методы виртуальные, а класс определен в виде макроса. То есть, если и наследоваться от него
то только уже от конкретной реализации (с конкретным типом) - тоже не функционально. К тому же объявление методов виртуальными скорости не добавляет. А если отказаться от виртуальности (и от макросовости) - можно с половину методов сделать с inline (правда нужно чтобы эти методы были в h файле, хотя если отказаться от макроса - нужно делать шаблоном, а с шаблонами - все методы будут в h файле )) ).
Marchello вне форума  
Ответить с цитированием