- 1
- 2
- 3
- 4
if(!preg_match('/@rambler.ru/', $item['email']) ) {
cmsCore::addSessionMessage('Можно использовать почту только <strong>rambler.ru</strong>', 'error');
$errors = true;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+159
if(!preg_match('/@rambler.ru/', $item['email']) ) {
cmsCore::addSessionMessage('Можно использовать почту только <strong>rambler.ru</strong>', 'error');
$errors = true;
}
// код надо расширить добавив другие домены, тот кто это писал явно не думал что придется это делать..
−195
// optimization. Should only be used to read it. Never to write it.
extern CGFloat __ccContentScaleFactor;
Может быть, я бунтарь!
__ccContentScaleFactor = -666;
+142
public Config(string[] str)
{
InitializeComponent();
try
{
textBox5.Text = str[0];
textBox6.Text = str[1];
textBox1.Text = str[2];
textBox2.Text = str[3];
textBox3.Text = str[4];
textBox4.Text = str[5];
textBox7.Text = str[6];
raz = str[7];
}
catch (Exception)
{
return;
}
}
Классика. Говнокод эпохи барокко. Строк мало, но пованивает.
+154
$this->db->from("admin_sidebar");
$this->db->where("folder", 1);
$this->db->order_by("sort", "asc");
$query = $this->db->get();
$data[0] = $query->result();
$this->db->from("admin_sidebar");
$this->db->where("folder", 2);
$this->db->order_by("sort", "asc");
$query = $this->db->get();
$data[1] = $query->result();
$this->db->from("admin_sidebar");
$this->db->where("folder", 3);
$this->db->order_by("sort", "asc");
$query = $this->db->get();
$data[2] = $query->result();
$this->db->from("admin_sidebar");
$this->db->where("folder", 4);
$this->db->order_by("sort", "asc");
$query = $this->db->get();
$data[3] = $query->result();
$this->db->from("admin_sidebar");
$this->db->where("folder", 5);
$this->db->order_by("sort", "asc");
$query = $this->db->get();
$data[4] = $query->result();
−165
passport integer
Из дипломной работы. Человек хоть раз открывал свой паспорт?
+159
if($ank['rating']>=0 && $ank['rating']<=1)echo " <img src='/rating/img/1.gif'></img>";
if($ank['rating']>=2 && $ank['rating']<=3)echo " <img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img>";
if($ank['rating']>=4 && $ank['rating']<=5)echo " <img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img>";
if($ank['rating']>=6 && $ank['rating']<=7)echo " <img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img>";
if($ank['rating']>=8 && $ank['rating']<=9)echo " <img src='/rating/img/2.gif'></img>";
if($ank['rating']>=10 && $ank['rating']<=11)echo " <img src='/rating/img/2.gif'></img><img src='/rating/img/1.gif'></img>";
if($ank['rating']>=12 && $ank['rating']<=13)echo " <img src='/rating/img/2.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img>";
if($ank['rating']>=14 && $ank['rating']<=15)echo " <img src='/rating/img/2.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img>";
if($ank['rating']>=16 && $ank['rating']<=17)echo " <img src='/rating/img/2.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img>";
if($ank['rating']>=18 && $ank['rating']<=19)echo " <img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img>";
if($ank['rating']>=20 && $ank['rating']<=21)echo " <img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/1.gif'></img>";
if($ank['rating']>=22 && $ank['rating']<=23)echo " <img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img>";
if($ank['rating']>=24 && $ank['rating']<=25)echo " <img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img>";
if($ank['rating']>=26 && $ank['rating']<=27)echo " <img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img>";
if($ank['rating']>=28&& $ank['rating']<=29)echo " <img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img>";
if($ank['rating']>=30 && $ank['rating']<=31)echo " <img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/1.gif'></img>";
if($ank['rating']>=32&& $ank['rating']<=33)echo " <img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img>";
if($ank['rating']>=34 && $ank['rating']<=35)echo " <img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img>";
if($ank['rating']>=36 && $ank['rating']<=37)echo " <img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img><img src='/rating/img/1.gif'></img>";
if($ank['rating']>=38 && $ank['rating']<=39)echo " <img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img>";
if($ank['rating']>=40 && $ank['rating']<=41)echo " <img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/2.gif'></img><img src='/rating/img/1.gif'></img>";
А что есть для этого циклы незнают
+73
// Current Month Days
for (int i = 1; i <= _nDaysInMonth; i++) {
if (_myPrefs.getIfConfigured()) {
if (_regionWithHolidays != null && _regionWithHolidays.length > 0) {
String holidayDateStringFormat = String.valueOf(i) + "-" + getMonthAsString(nCurrentMonth) + "-" + _strCurrentSelectedYear;
for (int index = 0; index < _regionWithHolidays.length; index++) {
if (_regionWithHolidays[index].getHolidayDate().equals(holidayDateStringFormat)) {
list.add(String.valueOf(i) + "-RED" + "-" + getMonthAsString(nCurrentMonth) + "-" + yy);
}
}
}
}
if (i == getCurrentDayOfMonth()) {
list.add(String.valueOf(i) + "-BLUE" + "-" + getMonthAsString(nCurrentMonth) + "-" + yy);
} else {
list.add(String.valueOf(i) + "-WHITE" + "-" + getMonthAsString(nCurrentMonth) + "-" + yy);
if (_myPrefs.getIfConfigured()) {
if (_regionWithHolidays != null && _regionWithHolidays.length != 0) {
String otherDates = String.valueOf(i) + "-" + getMonthAsString(nCurrentMonth) + "-" + _strCurrentSelectedYear;
for (int index = 0; index < _regionWithHolidays.length; index++) {
if (_regionWithHolidays[index].getHolidayDate().equals(otherDates)) {
list.remove(String.valueOf(i) + "-WHITE" + "-" + getMonthAsString(nCurrentMonth) + "-" + yy);
}
}
}
}
}
}
// some code
for (int i = 1; i <= _nDaysInMonth; i++) {
String[] day_color = list.get(i).split("-");
if (day_color[1].equals("WHITE")) {
//active dates in current month
dayNumberView.setTextColor(getResources().getColor(R.color.darkGrey_font));
} else if (day_color[1].equals("BLUE")) {
//current date in current month
holder.tvTime.setTextColor(getResources().getColor(R.color.whitetranslucent));
dayNumberView.setTextColor(getResources().getColor(R.color.whitetranslucent));
cell.setBackgroundResource(R.color.blue_font);
} else if (day_color[1].equals("RED")) {
//active dates in current month
dayNumberView.setTextColor(getResources().getColor(R.color.red));
}
}
Это приложение с десятками тысяч пользователей. Мне выпала честь править в нем баги. На сколько я могу судить задача этого куска была отобразить календарь на текущий месяц на экране и подсветить WHITE - обычные дни, BLUE - текущий, RED - выходные и праздничные. Итак в чем соль:
1) сама соль метода - в одном цикле создается список строк вида НОМЕР-ЦВЕТ-МЕСЯЦ-ГОД, чуть ниже в аналогичном цикле эти строки разбиваются по "-" и сравнивается по строковому значению цвета. Кроме того день может быть или текущим или праздничным, но никак не одновременно.
2) два практически одинаковых куска кода по 10 строк - строки 4-13 и 19-28, первый при определенных условия добавляет ПРАЗДНИЧНЫЙ день в календарь, потом день в 16-18 строках день всегда добавляется еще раз этот день, либо обычный(WHITE) либо текущий(BLUE), и выполняется второй кусок и если проходят те же условия т.е. фактические если был добавлен праздничный день(RED) то удаляется добавленный ОБЫЧНЫЙ день. Баг был в том что если текущий день был еще и праздничным то они задваивались. Сделать по нормальному - если день уже добавлен, не добавлять еще раз или сделать continue главному циклу. Не говоря уже о том чтобы добавить break после 9 строки, видно автор не знал про эти операторы.
−168
decode(coalesce(d.modif19,'0'),'0','0',d.modif19)
+86
function IsMemoryCommitByAdress(const AAddress: Pointer): Boolean;
var
MemoryInfo: TMemoryBasicInformation;
begin
Result := False;
if not Assigned(AAddress) then
Exit;
VirtualQuery(AAddress, MemoryInfo, SizeOf(MemoryInfo));
Result := MemoryInfo.State and MEM_COMMIT <> 0;
end;
function IsPointerToVMT(const APointer: Pointer): Boolean;
var
VMTPointer, VMTPointerSelf: Pointer;
begin
Result := False;
if not IsMemoryCommitByAdress(APointer) then
Exit;
VMTPointer := APointer;
VMTPointerSelf := Pointer(Integer(VMTPointer) + vmtSelfPtr);
if not IsMemoryCommitByAdress(VMTPointer) then
Exit;
if not IsMemoryCommitByAdress(VMTPointerSelf) then
Exit;
if not IsMemoryCommitByAdress(PPointer(VMTPointerSelf)^) then
Exit;
Result := PPointer(VMTPointerSelf)^ = VMTPointer;
end;
function IsBadptr(apointer:pointer):boolean;
begin
Result := IsMemoryCommitByAdress(APointer) and IsPointerToVMT(PPointer(APointer)^);
end;
Функция, для определения качества указателя, в ситуации "один объект - несколько указателей".
Гк в том, что нет надежности - это все равно, что юзать IsBadReadPtr и аналогичные.
Почему-то никто не пытается использовать операторы is и as (я узнал о них благодаря Тарасу, спасибо ему), чтобы сравнить качество приведения.
+138
bool ExcludeCase4(int iDepth)
{
MyNodeType pN = mPath[iDepth];
if (pN != null)
if (pN.AuxField.bRed) return false;
MyNodeType pP = mPath[iDepth - 1];
if (!pP.AuxField.bRed) return false;
MyNodeType pS;
if (LeftSon(iDepth))
pS = pP.pRight;
else
pS = pP.pLeft;
if (pS == null)
{
pP.AuxField.bRed = false;
iDepthBad = -1;
return true;
}
if (pS.AuxField.bRed) return false;
MyNodeType pSL = pS.pLeft;
if (pSL != null)
if (pSL.AuxField.bRed) return false;
MyNodeType pSR = pS.pRight;
if (pSR != null)
if (pSR.AuxField.bRed) return false;
pS.AuxField.bRed = true;
pP.AuxField.bRed = false;
iDepthBad = -1;
return true;
// Дерево стало хорошим. Корректировать больше не надо.
}
bool ExcludeCase6(int iDepth)
{
MyNodeType pN, pP, pS;
bool bLeft, bRedP;
pN = mPath[iDepth];
if (pN != null)
if (pN.AuxField.bRed) return false;
pP = mPath[iDepth - 1];
bRedP = pP.AuxField.bRed;
bLeft = LeftSon(iDepth);
if (bLeft)
pS = pP.pRight;
else
pS = pP.pLeft;
if (pS == null) return false;
if (pS.AuxField.bRed) return false;
MyNodeType pSL, pSR, p2, p3;
pSL = pS.pLeft;
pSR = pS.pRight;
if (bLeft)
{
if (pSR == null || pSR != null && !pSR.AuxField.bRed)
{
if (pSL == null) return false;
if (!pSL.AuxField.bRed) return false;
// Сюда попали => это Случай 5.
p2 = pSL.pRight;
pSL.pRight = pS;
pS.pLeft = p2;
pSL.AuxField.bRed = false;
pS.AuxField.bRed = true;
pP.pRight = pSL;
pSR = pS;
pS = pSL;
}
else
if (!pSR.AuxField.bRed) return false;
// Сюда попали => это Случай 6.
,......}
кусочек красно-черного дерева, необходимый, но не достаточный