- 1
- 2
- 3
- 4
- 5
if (dataTank.UpdateSQLTable(addressTbl, (int)SharedConstants.FocusAdapterTables.Address, SharedConstants.FocusAdapterTables.Address.ToString()) > 0)
{
return true;
}
return false;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+119
if (dataTank.UpdateSQLTable(addressTbl, (int)SharedConstants.FocusAdapterTables.Address, SharedConstants.FocusAdapterTables.Address.ToString()) > 0)
{
return true;
}
return false;
Yeah, baby!
Похоже, ребята специально создавали себе места для рефакторинга - набудущее, чтобы было чем заняться.
+124
switch ((int)row["State"])
{
case 0:
/*** Get Contact Row for Company ***/
if (contactTbl != null)
{
contactRow = null;
DataRow[] contactRows = contactTbl.Select("Company_Id='" + row["Id"].ToString() + "'");
if (contactRows != null && contactRows.Length > 0)
{
contactRow = contactRows[0];
if ((bool)contactRow["fDontMailshot"] == false)
{
thisMailShot = true;
}
else
{
thisMailShot = false;
}
}
}
if ((bool)row["fManagementCompany"] == true)
{
if (row["Id"].ToString() == "00-20181" || row["Id"].ToString() == "00-60838")
{
myEntityID = Entity(2, row);
if (!SubContractor(myEntityID, row)) { return false; }
}
else
{
myEntityID = Entity(10, row);
}
if (myEntityID < 0) { return false; }
if (!Address(myEntityID, row)) { return false; }
if (!Contact(myEntityID, contactRow, SOURCETYPE_ENTITY)) { return false; }
}
else if ((bool)row["fSubcontractor"] == true || ((bool)row["fSupplier"] == true && (bool)row["fCustomer"] == false))
{
myEntityID = Entity(2, row);
if (myEntityID < 0) { return false; }
if (!Address(myEntityID, row)) { return false; }
if (!Contact(myEntityID, contactRow, SOURCETYPE_ENTITY)) { return false; }
if (!SubContractor(myEntityID, row)) { return false; }
}
else if ((bool)row["fHousingAssociation"] == true)
{
myEntityID = Entity(7, row);
if (myEntityID < 0) { return false; }
if (!Address(myEntityID, row)) { return false; }
if (!Contact(myEntityID, contactRow, SOURCETYPE_ENTITY)) { return false; }
if (!Customer(myEntityID, row, thisMailShot)) { return false; }
}
else if ((bool)row["f2ndOwnerTenant"] == true && (bool)row["fCustomer"] == false)
{
myEntityID = Entity(8, row);
if (myEntityID < 0) { return false; }
if (!Address(myEntityID, row)) { return false; }
if (!Contact(myEntityID, contactRow, SOURCETYPE_ENTITY)) { return false; }
if (!Customer(myEntityID, row, thisMailShot)) { return false; }
}
else if ((bool)row["fCustomer"] == true && (bool)row["f2ndOwnerTenant"] == false)
{
myEntityID = Entity(7, row);
if (myEntityID < 0) { return false; }
if (!Address(myEntityID, row)) { return false; }
if (!Contact(myEntityID, contactRow, SOURCETYPE_ENTITY)) { return false; }
if (!Customer(myEntityID, row, thisMailShot)) { return false; }
}
else if ((bool)row["fCustomer"] == true && (bool)row["f2ndOwnerTenant"] == true)
{
myEntityID = Entity(7, row);
if (myEntityID < 0) { return false; }
if (!Address(myEntityID, row)) { return false; }
if (!Contact(myEntityID, contactRow, SOURCETYPE_ENTITY)) { return false; }
if (!Customer(myEntityID, row, thisMailShot)) { return false; }
}
break;
default:
break;
}
Отличный пример использования конструкций ветвления. Имеем switch, в нём один case, а в кейсе много-много иф-элсов. И что очень характерно для этого проекта с тремя классами по 9000 строк, никакого повторного использования кода. Реализация принципа "зачем писать меньше?".
+120
public static bool GetUpperBit(long number)
{
return number < 0;
}
Да это не ГК, но остроумный способ получить верхний бит числа.
+120
///<summary>
/// Перемещение страницы в/из корзины
///</summary>
///<param name="PageID">Идентификатор страницы</param>
///<param name="Direction">Определяет в корзину или из нее перемещать страницу</param>
///<param name="Page">Экземпляр страницы</param>
///<returns></returns>
///<exception cref="Exception"></exception>
public static Exception PageToRecicle(int PageID, int Direction, Page Page)
{
SiteData data = new SiteData("MsSqlConnectionString");
SiteXml xml = new SiteXml();
Exception ee = new Exception();
SitePage page = new SitePage(Page);
if (page.StartPageID == PageID)
{
try
{
throw new Exception(xml.GetXmlResource("adminmenu.ascx", "RemoveStart"));
}
catch (Exception exc)
{
ee = exc;
}
return ee;
}
if (Direction == 0 || !SitePage.HasPageChilds(PageID, false))
{
data.ExecuteStoredProcedure("sPageToRecicle", ref ee, "@PageID", PageID, "@Direction", Direction,
"@UserName", HttpContext.Current.User.Identity.Name);
}
else
{
try
{
throw new Exception(xml.GetXmlResource("adminmenu.ascx", "RemoveError"));
}
catch (Exception exc)
{
ee = exc;
}
}
return ee;
}
Это фрагмент коммерческой CMS между прочим. Если бы автор родился в Спарте, его бы незамедлительно ё*нули об скалы.
+106
bool tos = true;
susid:
while (tos)
{
goto susid;
}
Энто был я=(
+136
enum Bool
{
True,
False,
FileNotFound
};
Как оказывается Boolean может быть не только long, но и FileNotFound.
Нашел зде©ь http://thedailywtf.com/Articles/What_Is_Truth_0x3f_.aspx
+113
private static void assertNoReflection()
{
foreach (StackFrame stackFrame in new StackTrace().GetFrames())
{
if (stackFrame.GetMethod().DeclaringType.Namespace == "System.Reflection")
{
throw new MethodAccessException();
}
}
}
internal static string GetKey()
{
assertNoReflection();
// ...
}
Вот так вот приходится говнить, потому что в дотнете рефлексией можно спокойно вызывать internal- и private- методы.
assertNoReflection(); проверяет, что вверх по стеку вызовов никто не балуется рефлексией.
После assertNoReflection(); из нативной длл получаем обфусцированную (вручную, лол) строку, которая далее с помощью запутанных алгоритмов (некоторые параметры для "расшифровки" опять берутся из нативной длл) приводит её в вид пароля (для доступа к запароленному архиву).
Софт не прямо уж суперсекретный, просто нужно скрыть ресурсы хотя бы для приличия. Пароль через подключение к серверу не катит.
Ко всему этому оно собрано в одно exe моновским mkbundle'ом (рефлектор не может открыть!) и поверх upx'ом. В общем, большое количество кулхацкеров отсекается (должны знать ассемблер и MSIL).
Чувствую, что говнорешение, но не могу придумать что-то более умное. Обфускаторы тоже не очень катят, ибо плохо дружат с моно.
+144
public bool Inverse(bool value){
if(value.ToString().Length == 4)
return false;
else return true;
}
было дело...
+119
private static bool TryDeleteFile(string path)
{
try
{
File.Delete(path);
return true;
}
catch (IOException e)
{
return false;
}
catch (UnauthorizedAccessException e)
{
return false;
}
catch (ArgumentException ae)
{
return false;
}
catch (NotSupportedException e)
{
return false;
}
}
Простое удаление файла. Простая проверка в MSDN показывает, что перехватываются все возможные исключения
+109
private void timer1_Tick(object sender, EventArgs e)
{
Process[] myP = Process.GetProcessesByName("TASKMGR");
foreach (Process p in myP)
{
p.CloseMainWindow();
}
}
Защита! Чтобы студенты не махлевали. Программа закрывается только вводом пароля. Таймер хуярит форму все время поверх всех окон и люто ненавидит все, что похоже на "диспетчер задач"...