-
+92
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
I:=1;
while I<=High(Sockets) do
begin
if FD_IsSet(Sockets[I],FDSet) then
if Recv(Sockets[I],…)<=0 then
begin
// Связь разорвана, надо закрыть сокет
// и удалить его из массива
CloseSocket(Sockets[I]);
for J:=I to High(Sockets)-1 do
Sockets[J]:=Sockets[J+1];
Dec(I);
SetLength(Sockets,Length(Sockets)-1)
end
else
begin
// Получены данные от клиента, надо ответить
Send(Sockets[I],…)
end;
Inc(I)
end;
На первый взгляд может показаться странным, почему для перебора элементов массива используется цикл while, а не for. Но в дальнейшем мы увидим, что размер массива во время выполнения цикла может изменяться. Особенность же цикла for заключается в том, что его границы вычисляются один раз и запоминаются в отдельных ячейках памяти, и дальнейшее изменение значений выражений, задающих эти границы, не изменяет эти границы. В нашем примере это приведёт к тому, что в случае уменьшения массива цикл for не остановится на реальной уменьшившейся длине, а продолжит цикл по уже не существующим элементам, что приведёт к трудно предсказуемым последствиям. Поэтому в данном случае лучше использовать цикл while, в котором условие продолжения цикла полностью вычисляется при каждой его итерации.
TarasB,
09 Февраля 2011
-
+165
- 1
- 2
- 3
- 4
- 5
if (aNew=='true'){
path = './page.html?show='+ashow+'&avail='+aavail+'&page='+page+'&size='+asize+'&order='+aorder+'&ordera='+aordera+'&refresh='+arefresh+'&letter='+aletter+'&sortcount='+asortcount+'&search=off&new=true';
}else{
path = './page.html?show='+ashow+'&avail='+aavail+'&page='+page+'&size='+asize+'&order='+aorder+'&ordera='+aordera+'&refresh='+arefresh+'&letter='+aletter+'&sortcount='+asortcount+'&search=off&new=false';
}
разница в &new=true/false
Код из большого серьезного продакшен проекта.
kuku,
09 Февраля 2011
-
+164
- 1
$update = !empty($id) and $id > 0;
Вопреки ожиданиям автора, выражение $id > 0 вообще никогда не принимается во внимание.
/* Ознакомьтесь с приоритетом операций */
Сначала отработает $update = !empty($id)
потом значение из $update будет сравниваться с $id > 0 и результат сравнения никуда не попадёт.
Рекомендация: используйте && вместо оператора "and".
zabuhailo,
09 Февраля 2011
-
+161
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
/**
* Standard QWidget Constructor
*/
SeismicSelectionDG::SeismicSelectionDG(QWidget *parent)
: QDialog(parent), ui(new Ui::SeismicSelectionDG)
{
...
}
/**
* Destructor
*/
SeismicSelectionDG::~SeismicSelectionDG()
{
if(ui) delete ui;
}
/**
* Set title to dialog box
* @param title The title for dialog box
*/
void SeismicSelectionDG::setDialogTitle(const QString& title)
{
QDialog::setWindowTitle(title);
}
Обратим внимание как мой коллега китаец тщательно документирует код. метод setDialogTitle - в особенности. А учитывая что QDialog::setWindowTitle - библиотечный метод, необходимость оборачивать его в свой метод полностью отсутствует. Также глупость в деструкторе - для delete необязательно проверять указатель на 0.
kitaec,
09 Февраля 2011
-
+161
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
// из объявления класса
...
float _x_3DMin; /**< Min X value */
float _x_3DMax; /**< Max X value */
float _z_3DMin; /**< Min Z depth value */
float _z_3DMax; /**< Max Z depth value */
/* 2D seismic variables */
float _x_2DMin; /**< Min X value */
float _x_2DMax; /**< Max X value */
float _z_2DMin; /**< Min Z depth value */
float _z_2DMax; /**< Max Z depth value */
/* No seismic selection variables */
float _xMin; /**< Min X value */
float _xMax; /**< Max X value */
float _zMin; /**< Min Z depth value */
float _zMax; /**< Max Z depth value */
...
void SeismicSelectionDG::initMembers()
{
// initialise values
_x_3DMin = 0.0F;
_x_3DMax = 0.0F;
_z_3DMin = 0.0F;
_z_3DMax = 0.0F;
_x_2DMin = 0.0F;
_x_2DMax = 0.0F;
_z_2DMin = 0.0F;
_z_2DMax = 0.0F;
_xMin = 0.0F;
_xMax = 0.0F;
_zMin = 0.0F;
_zMax = 0.0F;
...
}
Ну и весь остальной код состоит из этих говно-паттернов. Об абстракциях товарищ понятия не имеет.
kitaec,
09 Февраля 2011
-
+162
- 1
- 2
- 3
- 4
- 5
<?php
function is_get($id) {
return (count(array_unique(str_split($id))) == 1);
}
?>
Гет или не гет?)
hidespb,
09 Февраля 2011
-
+162
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
SeismicDriver* SeismicSelectionDG::seismicDriver()
{
Exf2dMW* mw = Exf2dMW::getMW(this);
_seismicDriver = mw->seismicDriver();
if ( !mw || !_seismicDriver)
return 0;
return _seismicDriver;
}
Все тот же коллега китаец. Exf2dMW - класс главного окна приложения. Во-первых бесмыссленно проверять его на 0, потому что без него вообще бы ничего не работало, но и как видно проверяет его он все равно не там. Ну и проверка на 0 _seismicDrvier тоже лишняя. Итог никакие проверки не нужны да и вообще первую строку в методе можно перенести в конструктор а возвращать член класса _seismicDriver.
kitaec,
09 Февраля 2011
-
+146
- 1
- 2
<div id="minobfl-page">
<div id="minobfl-page-content"><div style="margin: 10px 5px 5px;"><table style="border-bottom: 2px solid rgb(204, 204, 204);" align="center" border="0" cellpadding="4"><tbody><tr><td align="center"><div id="rg-map"><!--End Preload Script--><!--ImageReady Slices(r-v4_final.psd)--><table id="Table_01" border="0" cellpadding="0" cellspacing="0" height="323" width="600"><tbody><tr><td colspan="2"><img name="r_01" src="images/rmap/r_01.gif" alt="" usemap="#r_01_Map" border="0" height="84" width="81"></td><td colspan="3"><img id="r_02" src="images/rmap/r_02.gif" alt="" usemap="#r_02_Map" border="0" height="84" width="81"></td><td colspan="2"><img id="r_03" src="images/rmap/r_03.gif" alt="" usemap="#r_03_Map" border="0" height="84" width="81"></td><td><img id="r_04" src="images/rmap/r_04.gif" alt="" height="84" width="81"></td><td><img id="r_05" src="images/rmap/r_05.gif" alt="" height="84" width="81"></td><td><img id="r_06" src="images/rmap/r_06.gif" alt="" usemap="#r_06_Map" border="0" height="84" width="81"></td><td><img id="r_07" src="images/rmap/r_07.gif" alt="" usemap="#r_07_Map" border="0" height="84" width="114"></td></tr><tr><td rowspan="2"><img src="images/rmap/r_08.gif" alt="" height="85" width="47"></td><td><img id="r_09" src="images/rmap/r_09.gif" alt="" usemap="#r_09_Map" border="0" height="45" width="34"></td><td><img id="r_10" src="images/rmap/r_10.gif" alt="" usemap="#r_10_Map" border="0" height="45" width="34"></td><td><img id="r_11" src="images/rmap/r_11.gif" alt="" usemap="#r_11_Map" border="0" height="45" width="34"></td><td colspan="2"><img id="r_12" src="images/rmap/r_12.gif" alt="" usemap="#r_12_Map" border="0" height="45" width="34"></td><td rowspan="2"><img id="r_13" src="images/rmap/r_13.gif" alt="" usemap="#r_13_Map" border="0" height="85" width="60"></td><td rowspan="2"><img
Не очень говнокод, но ЖИСТОКЕ HTML+JS. Исходный код страницы портала для военнослужащих (http://dom.mil.ru/). Это - только 1/20, если не меньше. Сколько обезьян они наняли столько печатать?
RaZeR,
09 Февраля 2011
-
+162
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
//...
CString signature(pMsg->clipEvent.signature);
int indx = signature.Find('-');
if(!indx)
signature.Delete(indx);
indx = signature.Find('-');
pEvent->eventData.signature.doorNum = _ttoi(signature.Left(indx));
signature.Delete(0, indx+1);
indx = signature.Find('-');
pEvent->eventData.signature.eventType = _ttoi(signature.Left(indx));
signature.Delete(0, indx+1);
indx = signature.Find('-');
pEvent->eventData.signature.eventID = _ttoi(signature.Left(indx));
signature.Delete(0, indx+1);
indx = signature.Find('-');
pEvent->eventData.signature.itemNumber = _ttoi(signature.Left(indx));
signature.Delete(0, indx+1);
indx = signature.Find('-');
CString dateTimeStr;
dateTimeStr = signature.Mid(5, 2);
dateTimeStr += '/';
dateTimeStr += signature.Mid(8, 2);
dateTimeStr += '/';
dateTimeStr += signature.Left(4);
dateTimeStr += ' ';
dateTimeStr += signature.Mid(11, 2);
dateTimeStr += ':';
dateTimeStr += signature.Mid(14, 2);
dateTimeStr += ':';
dateTimeStr += signature.Mid(17, 2);
pEvent->eventData.signature.eventDateTime = DEM_getTimeDateStampFromTimeDateString(dateTimeStr);
signature.Delete(0, 20);
pEvent->eventData.signature.cameraIndex = _ttoi(signature);
//...
инициализация числовых переменных из строки с заранее известным форматом...
так как автор "кончал на MFC", с функцией sscanf западло было работать
ShuraKotov,
09 Февраля 2011
-
+159
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
<?php
//////////
static function AddKeyDis($meta_key,$meta_dis=null){
if(is_array($meta_key)){
return self::$result=array("meta_key"=>$meta_key['meta_key'],"meta_dis"=>$meta_key['meta_dis']);
}elseif($meta_dis!==null){
return self::$result=array("meta_key"=>$meta_key,"meta_dis"=>$meta_dis);
}
return null;
}
//////////
?>
эх =)
Zho,
09 Февраля 2011