Пробую Resharper. Анализ кода - прекрасен

· На чтение уйдёт 1 минута · (162 слова)

Вообще классная штука этот Resharper, уже . Особо крутая штука - это Trial режим, который можно поставить на паузу. Как знал, что потом пригодится. И вот, пригодилось - пишу небольшой плагин для Unity3D. Решарпер, как и IDEA, должен прививать программисту чувство языка и стиль. Вообще вот за это я тоже крайне признателен ребятам из JetBrains.

Но временами случается странное. Например, есть у нас четыре куска кода:

UnityInvoker(() => purchaseHandler(null, actionNotSupportedException)); // 1
UnityInvoker(() => purchaseHandler(PerformProductPurchase(productId), null)); // 2
UnityInvoker(() => completionHandler(!string.IsNullOrEmpty(PerformProductPurchase(productId)))); // 3
UnityInvoker(() => completionHandler(false)); // 4

2 и 3 - "хорошо", 1 и 4 - отмечены через "implicitly captured closure". Почитаем документацию, она сообщает о том, что в методах 1 и 4 productId не будет garbage collected, пока выполняются метод 2 или 3. Тогда ПОЧЕМУ отмечены "хорошие" методы 1 и 4, которые на самом деле не мешают работе garbage collector'а? Непонятно.

В остальном всё круто, особенно нравится переписывание кода с использованием LINQ (к которому я, как Явист, толком не могу привыкнуть пока).

Полезное