October 5th, 2006

Book

Extract Method в Slickedit - проблема с областью действия переменных

Было 2 цикла:
for (size_t i = 0; i < 1000; i++)
{
}

for (size_t i = 0; i < 1000; i++)
{
}
Когда второй цикл заворачиваешь в метод, SlickEdit добавляет i в качестве параметра, хотя переменная определена внутри.

получается
void extracted_method(size_t i)
{
   for (size_t i = 0; i < 1000; i++)
   {
   }
}

...

for (size_t i = 0; i < 1000; i++)
{
}
extracted_method(i);
Естественно, это не просто избыточность, это не работает вообще, так как область действия i закончилась на момент вызова (я использую MSVC 2005 с включенным loop variable scope conformance).
Book

Inline expression <-> Variable refactoring

Хотелось бы поддержку такого рефакторинга, желательно в обе стороны:
   const size_t packetCount = packMax - packMin;
   const size_t packetSize = po.maximumDataPacketSize;

   CopyAndRelocateDataPackets(f, outFile, packetCount, packetSize);
=>
   CopyAndRelocateDataPackets(f, outFile, packMax - packMin, po.maximumDataPacketSize);
Book

(no subject)

Quick Extract Method const size_t заворачивает в параметр const const size_t & вместо const size_t
  1. Два раза подряд const вызывает предупреждение
  2. Очевидно, что typedef непонятно как передавать. Нужно давать возможность выбора конвенций передачи параметров, желательно с запоминанием маппинга const size_t => const size_t