-
+169
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
class SeismicDriver {
void set2DVolume (GlData2DVol* vol = 0, bool reserv = false);
GlData2DVol* _glData2DVol; /**< Seismic 2D Line */
}
void SeismicDriver::set2DVolume (GlData2DVol* vol, bool reserv)
{
_glData2DVol = vol;
}
Наш подопытный китаец очень предусмотрительный. Если в будущем вдруг случится, что функции понадобится второй параметр типа bool - опа! - он уже есть :)
kitaec,
09 Февраля 2011
-
+164
- 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
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
aLength = V_Array.length;
if(aLength == 1) {
if(V_Array[0][0]=='true'){
document.MainListForm.list_DV[0].checked = true;
document.MainListForm.list_NE[0].checked = true;
}else{
document.MainListForm.list_DV[0].checked = false;
document.MainListForm.list_NE[0].checked = false;
}
if(V_Array[0][1]=='true'){
document.MainListForm.list_DV[1].checked = true;
document.MainListForm.list_NE[1].checked = true;
}else{
document.MainListForm.list_DV[1].checked = false;
document.MainListForm.list_NE[1].checked = false;
}
if(V_Array[0][2]=='true'){
document.MainListForm.list_DV[2].checked = true;
document.MainListForm.list_NE[2].checked = true;
}else{
document.MainListForm.list_DV[2].checked = false;
document.MainListForm.list_NE[2].checked = false;
}
if(V_Array[0][3]=='true'){
document.MainListForm.list_DV[3].checked = true;
document.MainListForm.list_NE[3].checked = true;
}else{
document.MainListForm.list_DV[3].checked = false;
document.MainListForm.list_NE[3].checked = false;
}
return;
}
for (i = 0; i < aLength ; i++) {
if(V_Array[i][0]=='true'){
document.MainListForm[i].list_DV[0].checked = true;
document.MainListForm[i].list_NE[0].checked = true;
}else{
document.MainListForm[i].list_DV[0].checked = false;
document.MainListForm[i].list_NE[0].checked = false;
}
if(V_Array[i][1]=='true'){
document.MainListForm[i].list_DV[1].checked = true;
document.MainListForm[i].list_NE[1].checked = true;
}else{
document.MainListForm[i].list_DV[1].checked = false;
document.MainListForm[i].list_NE[1].checked = false;
}
if(V_Array[i][2]=='true'){
document.MainListForm[i].list_DV[2].checked = true;
document.MainListForm[i].list_NE[2].checked = true;
}else{
document.MainListForm[i].list_DV[2].checked = false;
document.MainListForm[i].list_NE[2].checked = false;
}
if(V_Array[i][3]=='true'){
document.MainListForm[i].list_DV[3].checked = true;
document.MainListForm[i].list_NE[3].checked = true;
}else{
document.MainListForm[i].list_DV[3].checked = false;
document.MainListForm[i].list_NE[3].checked = false;
}
}
типично китайский привет из реал лайф проект
kuku,
09 Февраля 2011
-
+162
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
class GlData2DLine
{
virtual std::vector<Vec2d> getDecimatedPoints();
protected:
std::vector<Vec2d> c_decimated_points;
}
std::vector<Vec2d> GlData2DLine::getDecimatedPoints()
{
return c_decimated_points;
}
class GlData2DLineOD : public GlData2DLine
{
virtual std::vector<Vec2d> getDecimatedPoints();
}
std::vector<Vec2d> GlData2DLineOD::getDecimatedPoints()
{
return c_decimated_points;
}
Наш любимый китаец увлекся ООП и полиморфизмом что забыл очевидное.
kitaec,
09 Февраля 2011
-
+77
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
public void log(String msg) {
try {
StringBuffer sb = new StringBuffer(), sb2 = new StringBuffer();
sb.append(getDeviceId()).append(": ").append(msg).append('\n');
sb2.append("^^ ").append(sb);
System.out.println(sb2.toString()); // Вывод в консоль
platform.logEvent(msg.getBytes()); // Вывод в лог трубы
} catch (Exception e) {
// Ignore
}
}
Проект под BlackBerry. Каменты мои.
Ниасилил в чем соль двух стрингбуферов О_о
Gsom11,
09 Февраля 2011
-
+166
- 1
- 2
- 3
- 4
- 5
- 6
- 7
if(VisabilityOnOff==true){
document.SearchForm.searchoption[0].disabled=true;
document.SearchForm.searchoption[1].disabled=true;
}else if(VisabilityOnOff==false){
document.SearchForm.searchoption[0].disabled=false;
document.SearchForm.searchoption[1].disabled=false;
}
kuku,
09 Февраля 2011
-
+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