Показать сообщение отдельно

  #7  
Старый 15.06.2010, 00:52
Bers
Новичок
Регистрация: 17.05.2010
Сообщений: 5
Провел на форуме:
13971

Репутация: 10
По умолчанию

Пару слов про этот класс, CLexeme
1. Зачем у него публичный метод Init()? Сюдя по названию (рискну предположить, что Init здесь означает инициализацию, а не сброс состояния, к примеру, т.к. тогда его было бы логично назвать Reset()), так вот, сюдя по названию, он нужен для инициализации экземпляра этого класса, так какой смысл выносить его в отдельный метод? Перенеси его код в конструктор - меньше вероятность, что при каких-либо переделках случайно словишь баг.

2. Собственно тело метода Init(). Вот это:
Код:
memset(this, 0, sizeof(LEXEME));
тихий ужас. Ладно бы так было:
Код:
memset(this, 0, sizeof(CLexeme));
Понятно, что в твоем коде работают оба варианта, но они работают ровно до тех пор, пока ты не добавишь еще одно поле, но в класс CLexeme. Хотя, вообще говоря, 5 полей класса очистить проще вручную.

3. Вообще мне не ясен смысл класса CLexeme - он же просто расширяет LEXEME парой методов. Не проще ли их объединить в один класс?

Остальное даже смотреть не стал - обилие закомменченых строк кода, куча адский enum'ов без единой строчки описания, короче, хрен разберешься.
Мой скромный совет - отрефакторить код до читабельного состояния, потом - найти и исправить утечки, и только потом - заниматься оптимизацией.

PS: Шпаргалка с исходником в архиве улыбнула
 
Ответить с цитированием