- 1
- 2
- 3
- 4
- 5
if (count($stores) == 1) {
foreach ($stores as $store) {
$storeId = $store->id;
}
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+145
if (count($stores) == 1) {
foreach ($stores as $store) {
$storeId = $store->id;
}
}
+144
/* Convert IP address to unsigned long int. */
function ip2ulong($ip) {
return sprintf("%u", ip2long32($ip));
}
https://github.com/pfsense/pfsense/blob/master/etc/inc/util.inc#L414-L417
Продолжаем осторожно идти дальше. Это нормально вообще? Да, я видел всякие смехуёчки с магическим приведением типов в PHP и JS, так что наверняка оно где-то правильно конвертится и все работает несмотря ни на что и вопреки. Может, это даже нормальная практика в мире PHP, но мне страшно.
+144
if ($ipaddr == $ip_reverse) {
return true;
} else {
return false;
}
https://github.com/pfsense/pfsense/blob/master/etc/inc/util.inc#L625-L629
Давно хотел спросить: это как-нибудь здравым смыслом оправдывается? Часто встречаю похожее, когда чужой код смотрю. Может, это профи делают для… читаемости какой-то, я не знаю. Или я ищу хорошее там, где его нет?
+144
int spisok::kolvo()
{
return spisok::N;
}
+142
#define ns 7
#define nfio 15
Клевый стиль определения глобальных констант
+144
function order_to() {
jQuery.ajax({
type: "POST",
url: url+'/saveMethod/',
data: {
"method": "guest"
},
success: function(success) {
console.log(success);
jQuery.ajax({
type: "POST",
url: url+'/saveBilling/',
data: {
"billing[address_id]": "",
"billing[firstname]": "Test",
"billing[lastname]": "Query",
"billing[company]": "",
"billing[email]": "[email protected]",
"billing[street][]": "Street",
"billing[city]": "City",
"billing[region_id]": "",
"billing[region]": "",
"billing[postcode]": "50",
"billing[country_id]": "UA",
"billing[telephone]": "+100500",
"billing[fax]": "",
"billing[customer_password]": "",
"billing[confirm_password]": "",
"billing[save_in_address_book]": "1",
"billing[use_for_shipping]": "1"
},
success: function(success) {
console.log(success);
jQuery.ajax({
type: "POST",
url: url+'/saveShippingMethod/',
data: {
"shipping_method": "flatrate_flatrate"
},
success: function(success) {
console.log(success);
jQuery.ajax({
type: "POST",
url: url+'/savePayment/',
data: {
"payment[method]": "checkmo"
},
success: function(success) {
console.log(success);
var reg = /\/form_key\/(.*?)\/\'\)/;
var raw = jQuery('button.button.btn-cart').attr('onclick');
if (raw == undefined) {
key_form = jQuery('form input[name=form_key]').val();
} else {
var key_form = reg.exec(raw)[1];
};
console.log(key_form);
jQuery.ajax({
type: "POST",
url: url+'/saveOrder/form_key/' + key_form + '/',
data: {
"payment[method]": "checkmo"
},
success: function(success) {
console.log(success);
}
});
}
});
}
});
}
});
}
});
}
order_to();
order_to();
Каскадный запрос на jQuery на подтверждение заказа в Magento загнан в функцию и вызывается два раза, потому что с первого не проходит. А еще в одном блоке токен получается из артибута узла через регулярку...
+143
if (is_array($search_ct_properties->getEngines()))
{
$where_engines = array();
foreach ($search_ct_properties->getEngines() as $engine)
{
if ($engine == 5)
{
$where_engines[] = 'ct_modifications.fuel_id != 6';
}
else
{
$where_engines[] = 'ct_modifications.fuel_id = 6';
}
}
$where[] = '(' . implode(' OR ', $where_engines) . ')';
}
если 5, то это точно не 6!
+130
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <stat.h>
#include <conio.h>
#include <io.h>
#include <dos.h>
#include <time.h>
unsigned char kod_key;
int DIAG_F,P,R,o,u,i,i2,i3,j=0,j1,j2,i1,KPR,PNSKV,KOLS,KOLS_S,KOLS_P,KS=0,KOLT,KOLT_S,KOLT_P,MAXTM,MAXTM_S,MAXTM_P;
int F_k=0,F_PrR=0,F_N_Sv=0,K_dov,K_raz,PROZ,PROZ1,NS,NS_S,NS_P,NT_S,NT_P,NT;
long POZ,POZ1,KOLM;
float SDAT,x=0.0,v,v1,v2,DP=1.0,KK,KDAT=1.0,MS_P,MSO,MSO_P,MSO_S,MS, DS,DS_S,DS_P,MINMS,MINMS_S,MINMS_P,MAXMS,MAXMS_S,MAXMS_P,PM,PM_S,PM_P,MS_TEK;
unsigned int k=0,k1=0,k2=0;
float min,max,m[10],w2, w,w1;
clock_t t1,t2,t3,t4,t5,tc_MIN,tc_MSO;
time_t l1,l2;
struct date d;
struct time t,t_MIN,t_MSO;
int F1,F2;
union REGS rg;
//...........................
void sign()
{
i3++;
x=x+(0.00001*i3);
/*x=x+0.00244;*/
v=x;
v=(v+5)/0.00244;
v1=v/256;
v2=(int)v%256;
outportb(BASE_5710+12,v2);
outportb(BASE_5710+13,v1);
}
//...........................
K_dov=0;
kod_key=0;
d1:
while(!kod_key)
{
_AH=3;
_AL=1;
_DX=1;
geninterrupt(0x17);
kod_key=_AH;
opros();
if(MS_TEK>=2*PM)
break;
}
if(kod_key)
{
switch(kod_key)
{
case 5:
K_dov=1;
goto kon_d;
break;
default:
kod_key=0;
goto d1;
break;
}
}
if(R==1)
{
R=0;
NT++;
}
//...........................
if(kod_key)
{
switch(kod_key)
{
case 5:
K_dov=1;
goto kon_d;
break;
default:
kod_key=0;
break;
}
}
Код из реального коммерческого проекта. Все переменные объявлены глобально. Весь код в 2100 строк находится в одном файле. Комментариев нет. Внятных имён нет. Форматирования нет. Магические коэффициенты и флаги непонятных состояний повсюду. Бесконечное самоповторение. В наличии 7 функций, 2 из которых - это 85% всего кода проекта. Переходы по goto на 500 строчек в любом направлении.
+141
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
BitBtn1->Enabled=false;
String KolDaysInMonth=MonthDays[IsLeapYear(Edit1->Text.ToInt())][ComboBox1->ItemIndex];//кол-во дней в месяце выбранного года
String TimeOT="cast('"+String(ComboBox1->ItemIndex+1)+".01."+Edit1->Text+" 00:00:00' as datetime)";
String TimeDO="cast('"+String(ComboBox1->ItemIndex+1)+"."+KolDaysInMonth+"."+Edit1->Text+" 23:59:59' as datetime)";
String BTWOTDO="BETWEEN "+TimeOT+" and "+TimeDO;
AnsiString NomZav="";
AnsiString NomPar="";
//заявки
ADOQuery1->Close(); //and nomzav NOT IN (select distinct nomzav from ochzav.dbf where deleted=0 and nomopr IN (select distinct nomoprl from kompar.dbf where deleted=0 and nompar IN (select distinct nompar from kompar.dbf where deleted=0 and datzaob NOT "+BTWOTDO+")))
ADOQuery1->SQL->Clear(); //and nomzav NOT IN (select distinct nomzav from ochzav.dbf where deleted=0 and dakote NOT "+BTWOTDO+")
ADOQuery1->SQL->Add("select distinct nomzav from ochzav.dbf where deleted=0 and dakote "+BTWOTDO+" and nomzav NOT IN (select distinct nomzav from ochzav.dbf where deleted=0 and dakote>"+TimeDO+") and nomzav NOT IN (select distinct nomzav from ochzav.dbf where deleted=0 and nomopr IN (select distinct nomoprl from kompar.dbf where deleted=0 and datzaob IS NULL)) and nomzav NOT IN (select distinct nomzav from ochzav.dbf where deleted=0 and nomopr IN (select distinct nomoprl from kompar.dbf where deleted=0 and nompar IN (select distinct nompar from kompar.dbf where deleted=0 and nomoprl IN (select distinct nomopr from ochzav.dbf where deleted=0 and dakote IS NULL))))");
ADOQuery1->Open();
if (!ADOQuery1->Eof) {//если что то нашлось
while (!ADOQuery1->Eof) {
NomZav=NomZav+"'"+ADOQuery1->FieldByName("nomzav")->AsString.Trim()+"',";
ADOQuery1->Next();
}
NomZav=NomZav.Delete(NomZav.Length(),1);//обрезаем запятую на конце
//партии
ADOQuery1->Close();
ADOQuery1->SQL->Clear(); //and nompar NOT IN (select distinct nompar from kompar.dbf where deleted=0 and datzaob NOT "+BTWOTDO+")
ADOQuery1->SQL->Add("select distinct nompar from kompar.dbf where deleted=0 and nompar IN (select distinct nompar from kompar.dbf where deleted=0 and nomoprl IN (select distinct nomopr from ochzav.dbf where deleted=0 and nomzav IN ("+NomZav+")))");
ADOQuery1->Open();
if (!ADOQuery1->Eof) {//если что то нашлось
while (!ADOQuery1->Eof) {
NomPar=NomPar+"'"+ADOQuery1->FieldByName("nompar")->AsString.Trim()+"',";
ADOQuery1->Next();
}
NomPar=NomPar.Delete(NomPar.Length(),1);//обрезаем запятую на конце
}
}
if (NomZav.Trim().Length()==0||NomPar.Trim().Length()==0) {
ShowMessage("Не найденно завершённых заявок и партий за "+ComboBox1->Text+" "+Edit1->Text+" года");
BitBtn1->Enabled=true;
Abort();
}
if (Application->MessageBoxA(AnsiString("Вы действительно хотите удалить все завершённые заявки и партии за "+ComboBox1->Text+" "+Edit1->Text+" года?\n\n"
"Завершённые заявки: "+NomZav+"\nЗавершённые партии: "+NomPar).c_str(),"Удаление завершённых заявок и партий",MB_YESNO)==IDYES) {
//удаление партий из ochpar.dbf
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("update ochpar.dbf set deleted=1 where deleted=0 and nompar IN ("+NomPar+")");
ADOQuery1->ExecSQL();
//удаление партий из kompar.dbf
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("update kompar.dbf set deleted=1 where deleted=0 and nompar IN ("+NomPar+")");
ADOQuery1->ExecSQL();
//удаление заявок из ochzav.dbf
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("update ochzav.dbf set deleted=1 where deleted=0 and nomzav IN ("+NomZav+")");
ADOQuery1->ExecSQL();
ShowMessage("Удаление партий и заявок за "+ComboBox1->Text+" "+Edit1->Text+" года завершено успешно");
}
BitBtn1->Enabled=true;
}
+141
AnsiString SQLAdderFictDel(TADOQuery * QueryForTry,/*для неотображаемых операций*/
TADOQuery * QueryForOpen,/*для отображаемых операций*/ AnsiString TableName,/*имя таблицы*/ AnsiString Deleted,/*имя поля "признак удаления"*/
AnsiString AutoInc,/*автоинкримент(уникальное в представлении СУБД)*/ AnsiString SQL_TestOnUnique,/*уникальные поля в представлении пользователя(одно или несколько, если таковых нет, то им будет являться автоинкримент(уникальное в представлении СУБД("and id = "+id_который_под_курсором)))*/
AnsiString SQL_Insert_Fields,/*имена полей, в которые надо внести значения*/ AnsiString SQL_Insert_Values,/*вносимые значения*/
AnsiString SQL_Update_Str,/*имена полей и вносимые значения*/ AnsiString CursorRec,/*значение уникального поля под курсором("0", если ToUpdating == false)*/ AnsiString Order,/*упорядочивание*/
bool ToUpdating,/*true, если используется для update*/ bool CursorToAddUpdRec,/*true, если нужно поместить курсор на добавленную запись(только если уникальное поле(в представлении СУБД) - автоинкримент)*/ bool ReturnRealFutureID)/*true, если нужно вернуть значение ID, которое будет добавлено в следующий раз*/
{
AnsiString ValToLocate,/*значение уникального поля будущей записи*/ DP;/*формирование значения уникального поля(либо первое попавшееся удалённое, либо под курсором)*/
if (CursorToAddUpdRec==true&&ToUpdating==false)//ПОИСК ЗНАЧЕНИЯ УНИКАЛЬНОГО ПОЛЯ БУДУЩЕЙ ЗАПИСИ
{
QueryForTry->Close();
QueryForTry->SQL->Clear();
QueryForTry->SQL->Add("select "+AutoInc+" from "+TableName+" where "+Deleted+" = 1 order by "+AutoInc+" asc");//отображаем то, что получилось
QueryForTry->Open();
if (QueryForTry->Eof)
{
QueryForTry->Close();
QueryForTry->SQL->Clear();
QueryForTry->SQL->Add("select max("+AutoInc+") from "+TableName+" where "+Deleted+" = 0");//отображаем то, что получилось
QueryForTry->Open();
ValToLocate=QueryForTry->Fields[0][0]->AsString.ToIntDef(0)+1;
}
else ValToLocate=QueryForTry->Fields[0][0]->AsString.ToInt();
}
else if (CursorToAddUpdRec==true&&ToUpdating==true) ValToLocate=CursorRec;
if (ToUpdating)
{//удаление выделенного поля
QueryForTry->Close();
QueryForTry->SQL->Clear();
QueryForTry->SQL->Add("update "+TableName+" set deleted = 1 where "+AutoInc+" = "+CursorRec);
QueryForTry->ExecSQL();
}
QueryForTry->Close();
QueryForTry->SQL->Clear();
QueryForTry->SQL->Add("select distinct "+Deleted+" from "+TableName+" where "+Deleted+" = 0 "+SQL_TestOnUnique);//проверка на уникальность(есть ли запись со значениями соответствующих полей?)
QueryForTry->Open();
if (!QueryForTry->Eof)
{//если тест на уникальность провален(такая запись уже есть)
if (ToUpdating)
{//восстановление поля, удалённого при выделении
QueryForTry->Close();
QueryForTry->SQL->Clear();
QueryForTry->SQL->Add("update "+TableName+" set deleted = 0 where "+AutoInc+" = "+CursorRec);
QueryForTry->ExecSQL();
}
MessageDlg("Такая запись уже существует!",mtWarning,TMsgDlgButtons()<<mbOK,0);
return ".FAIL.";
}
else
{//проверяются поля с фильтром удаления("удалённые")
QueryForTry->Close();
QueryForTry->SQL->Clear();
QueryForTry->SQL->Add("select distinct "+AutoInc+" from "+TableName+" where "+Deleted+" = 1");//выбрать поля в которых есть признак отсутствия информации(удалённые) и соответствующее им уникальное поле
QueryForTry->Open();
if (!QueryForTry->Eof)
{//если есть поля с фильтром удаления("удалённые")
if (ToUpdating) DP=CursorRec;//для обновления выбирается запись с тем же самым уникальным полем
else DP=QueryForTry->Fields[0][0]->AsString;//для добавления выбирается первая попавшаяся запись с признаком удаления
QueryForTry->Close();
QueryForTry->SQL->Clear();
QueryForTry->SQL->Add("update "+TableName+" set "+Deleted+" = 0, "+SQL_Update_Str+" where "+AutoInc+" = "+DP);//отменить удаление для поля, присвоить ему значения
QueryForTry->ExecSQL();
}
else
{//если нет полей с фильтром удаления, то вставляем как в обычном SQL
QueryForTry->Close();
QueryForTry->SQL->Clear();
QueryForTry->SQL->Add("insert into "+TableName+" ("+SQL_Insert_Fields+","+Deleted+") values("+SQL_Insert_Values+",0)");//SQL вставка
QueryForTry->ExecSQL();
}
QueryForOpen->Close();//отображение и сортировка
QueryForOpen->SQL->Clear();
QueryForOpen->SQL->Add("select * from "+TableName+" where "+Deleted+" = 0 "+Order);//отображаем то, что получилось
QueryForOpen->Open();
if (CursorToAddUpdRec)
{//установка курсора на добавленное значение
TLocateOptions Options;
Options<<loCaseInsensitive<<loPartialKey;
QueryForOpen->Locate(AutoInc,ValToLocate,Options);
}
if (ReturnRealFutureID)//ПОИСК ЗНАЧЕНИЯ УНИКАЛЬНОГО ПОЛЯ БУДУЩЕЙ ЗАПИСИ
{
QueryForTry->Close();
QueryForTry->SQL->Clear();
QueryForTry->SQL->Add("select "+AutoInc+" from "+TableName+" where "+Deleted+" = 1 order by "+AutoInc+" asc");//отображаем то, что получилось
QueryForTry->Open();
if (QueryForTry->Eof)
{
QueryForTry->Close();
QueryForTry->SQL->Clear();
QueryForTry->SQL->Add("select max("+AutoInc+") from "+TableName+" where "+Deleted+" = 0");//отображаем то, что получилось
QueryForTry->Open();
ValToLocate=QueryForTry->Fields[0][0]->AsString.ToIntDef(0)+1;
}
else ValToLocate=QueryForTry->Fields[0][0]->AsString.ToInt();
}
else if (ReturnRealFutureID==false&&CursorToAddUpdRec==false) return ".WIN.";
return ValToLocate;
}
}