Daily WTF

Так пишут наши американские коллеги:
internal static string ConvertFileLenToKB(long ll_FileSize)
{
	string l_strFileSize = "";
	int l_iOneKB = 1024, l_iCount = 0;
	for (; ll_FileSize > l_iOneKB; ll_FileSize -= l_iOneKB, l_iCount++) ;

	if (l_iCount > 0)
	{
		l_strFileSize = l_iCount.ToString();
	}
	else
	{
		l_strFileSize = ll_FileSize.ToString();
	}

	l_strFileSize = FormatNumberStringWithCommas(l_strFileSize);

	/*	Append KB to it */
	if (l_iCount > 0)
	{
		l_strFileSize += " KB";
	}

	return l_strFileSize;
}
  • +2
  • 18 марта 2011, 16:39
  • neiver

Комментарии (16)

RSS свернуть / развернуть
при отсутствии аппаратного деления это один из выходов…
0
  • avatar
  • kest
  • 18 марта 2011, 17:27
Ага. На C# на х86. При отсутствии аппаратного деления можно было просто на 10 разрядов вправо сдвинуть…
Этот-же товарищь пишет:
void Foo(bool condition)
{
	if(condition == true)
	{
		DoSomething();
	} else if(condition == false)
	{
		DoSomethingElse();
	}
	{
		// Ахтунг!!! Нам подсунули неправильный bool
		DoSomethingMore();
	}
} 
0
Перед поседним блоком тоже else — пропустил.
0
для C# x86 конечно перебор… а сдвиг сработает только для степеней двойки(тут более чем уместен), на 1000, например, уже не поделишь сдвигом.

сколькож оно файл размером в пару ГБ(исошник какой-нибудь или фильм) будет размер пересчитывать…
что это за софтина если не секрет?
0
Делить сдвигами и умножением можно не только на степени двойки, например, деление на 10:
inline uint16_t div10(uint16_t num)
{
    uint16_t q = num*0x6667ul >> 16;
    q >>= 2;
    return q;
}


А софтина — суровый Ентерпрайз, на для широкой публики.
0
Может быть тот товарищь хотел написать так
void Foo(char condition)
или так
void Foo(int condition)
Иначе Foo выглядит в точности как в анекдоте про программиста который ложась спать ставил рядом с собой стакан с водой на тот случай если захочет ночью пить и пустой стакан на случай если не захочет ночью пить.
0
Там код был просто скопирован откуда-то, в оригинале может действительно был не bool, а int или еще что.
А вообще товарищ этот потихоньку исправляется, такких смешных ляпов больше не делает. Делает более глубокие, такие что прибыстром просмотре не увидишь. А еще он невероятно продуктивен, может тысячи строк кода в день написать/переписать.
0
А еще он невероятно продуктивен, может тысячи строк кода в день
скопипастить
0
На C# вообще весьма забавный код получается, представьте, что выпустили C# компилятор для AVR, тогда настройка 7-ого бита PORTA на вход с подтяжкой будет выглядеть примерно так:

System.IO.PORTA.BIT7.Direction = IOPorts.Direction.Output;
System.IO.PORTA.BIT7.PullUPResistor = IOPorts.PullUPResistor.OFF;
...
0
После компактного C километровые названия методов в C# очень доставляют)))
0
Человек, когда читает текст, читает его словами целиком, и на чтение 3 символьного идентификатора нужно практически столько-же времени, сколько для трёх словного:
getfv
GetFileVersion

Какой идентификатор быстрее читается?
0
Сложно сказать, разницы не почувствовал.
0
А разница появляется когда помимо getfv есть еще getfs, getfp gethz и много еще каких.
В написании функции/метода дать ей и аргументам правильные названия, чтоб вскому кто их видит понятно становилось для чего это нужно, — это половина работы.
+1
поддерживаю — внятные имена — отличный метод самодокументирования. Но перебарщивать тоже не надо =)
+1
На мой взгляд, суть вопроса была не в том, что длинно, а в том, что до едреней фени вложенных полей в структурах. Другое дело, как компилятор будет это обрабатывать: объектами или просто записями. Вот тут и скрывается адов писец.
0
Ну, в больших системах это оправдано. Набирать долго — но именно для этого и придумано автодополнение.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.