- 1
- 2
- 3
- 4
- 5
- 6
- 7
while (f != null && !string.IsNullOrEmpty(f.FileName) && f.ContentLength != 0)
{
if (f != null && !string.IsNullOrEmpty(f.FileName) && f.ContentLength != 0)
{
// ...
}
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+136
while (f != null && !string.IsNullOrEmpty(f.FileName) && f.ContentLength != 0)
{
if (f != null && !string.IsNullOrEmpty(f.FileName) && f.ContentLength != 0)
{
// ...
}
}
Проверка на всякий случай
ваш кэп
Кто-то сомневался? 5487 - говнокод, тк этого нет.
L_0011: call bool [mscorlib]System.String::IsNullOrEmpty(string)
L_0016: brtrue.s L_001f
L_0018: ldloc.0
L_0019: callvirt instance int32 ConsoleApplication1.Foo::get_ContentLeng th()
L_001e: pop
L_001f: ldloc.0
L_0020: brfalse.s L_0037
L_0022: ldloc.0
L_0023: callvirt instance string ConsoleApplication1.Foo::get_FileName()
L_0028: call bool [mscorlib]System.String::IsNullOrEmpty(string)
L_002d: brtrue.s L_0037
L_002f: ldloc.0
L_0030: callvirt instance int32 ConsoleApplication1.Foo::get_ContentLeng th()
L_0035: brtrue.s L_0008
Вообще, любой нормальный доделаный современный компилятор умеет делать оптимизацию expression elimination. Неужели майкрософт в сишарпе это не осилила? В С++ ихнем эта оптимизация работает.
А вообще, часть выражений с небольшой глубиной вложенности некоторые компиляторы вырезают даже без поддержки global optimization.
здесь цикл,
потом оператор, статический метод, метод экземпляра, метод экземпляра
потом оператор, статический метод, метод экземпляра, метод экземпляра
не смотря на код - или представляя себе другой код, как можно удалить из этого что-либо?
давайте тогда сразу весь код на noop заменять и все дела :)