5. Одно мучение!
• удобство сопровождения
• гибкость
• портируемость
• возможность повторного использования
• тестируемость
дизайн: абстракция, декомпозиция
6. Ни слова не понял!
• удобочитаемость
• понятность
code convention: наименование, форматирование,
комментарии
дизайн: абстракция, декомпозиция
7. Ни слова не понял!
• «Пишите код исходя из того, что все
программисты, которые будут сопровождать
вашу программу, — склонные к насилию
психопаты, знающие, где вы живёте.»
• «Каждый дурак может написать код, понятный
компьютеру. Хорошие программисты пишут
код, понятный людям.» – Мартин Фаулер
• «Можешь не писать – не пиши.» – Лев Толстой
11. Запахи
«Если что-то плохо пахнет, это что-то надо поменять.
- Мнение бабушки Бек, высказанное
при обсуждении проблем детского воспитания»
• дублирование кода
• длинная функция
• длинный список параметров
• группы данных
• комментарии
• неочевидное поведение
• непоследовательность
• некорректное граничное поведение
• непонятные намерения
• магические числа
• составные условия
• отрицательные условия
• множественная ответственность функции
• скрытые временные привязки
17. for J1:=0 to Length(wArTypCoil[JJ])-1 do begin
with wArTypCoil[JJ][J1] do begin
with cTyp_coil do begin NRow:=J1+1;NTab:=II_Tabl+4; Itm5:=II;StrN:=2230;mEd:=true;Lev:=2;end;P5;ArP5[IJ5]:=@cTyp_coil;inc(IJ5);inc(II);
with cD_in do begin NRow:=J1+1;NTab:=II_Tabl+4; Itm1:=II; StrN:=2231;mEd:=true;NPos:=1;Lev:=2;end;P1;ArP1[IJ1]:=@cD_in;inc(IJ1);inc(II);
with cTyp_pr do begin NRow:=J1+1;NTab:=II_Tabl+4;
Itm6:=II;NTypChs1:=1;StrN:=2232;mEd:=true;Lev:=2;end;P6;ArP6[IJ6]:=@cTyp_Pr;inc(IJ6);inc(II);
with cRad_str do begin NRow:=J1+1;NTab:=II_Tabl+4; Itm5:=II; StrN:=2233;mEd:=true;Lev:=2;end;P5;ArP5[IJ5]:=@cRad_str;inc(IJ5);inc(II);
with cPW_coil_rad do begin NRow:=J1+1;NTab:=II_Tabl+4; Itm2:=II;
StrN:=2235;mEd:=true;Lev:=2;end;P2;ArP2[IJ2]:=@cPW_coil_rad;inc(IJ2);inc(II);
with cPW_coil_os do begin NRow:=J1+1;NTab:=II_Tabl+4; Itm2:=II;
StrN:=2248;mEd:=true;Lev:=2;end;P2;ArP2[IJ2]:=@cPW_coil_os;inc(IJ2);inc(II);
with cRat_cur do begin NRow:=J1+1;NTab:=II_Tabl+4; Itm1:=II;
StrN:=2236;mEd:=true;NPos:=2;Lev:=2;end;P1;ArP1[IJ1]:=@cRat_cur;inc(IJ1);inc(II);
with cTrn_coil do begin NRow:=J1+1;NTab:=II_Tabl+4; Itm1:=II;
StrN:=2237;mEd:=true;NPos:=3;Lev:=2;end;P1;ArP1[IJ1]:=@cTrn_coil;inc(IJ1);inc(II);
with cRad_dim do begin NRow:=J1+1;NTab:=II_Tabl+4; Itm1:=II;
StrN:=2271;mEd:=true;NPos:=3;Lev:=2;end;P1;ArP1[IJ1]:=@cRad_dim;inc(IJ1);inc(II);
//...
end;
end;
with wArNconcentr[JJ] do begin NRow:=1;NTab:=II_Tabl+1; Itm2:=II;
StrN:=2279;mEd:=false;Lev:=1;end;P2;ArP2[IJ2]:=@wArNconcentr[JJ];inc(IJ2);inc(II);
with wArM_c[JJ] do begin NRow:=1;NTab:=II_Tabl+1; Itm3:=II;
StrN:=2316;mEd:=true;NPos:=0;Lev:=1;end;P3;ArP3[IJ3]:=@wArM_c[JJ];inc(IJ3);inc(II);
// with wArNumZoneOtvod_c[JJ] do begin NTab:=II_Tabl+1; Itm3:=II;
StrN:=2317;mEd:=true;NPos:=0;Lev:=1;end;P3;ArP3[IJ3]:=@wArNumZoneOtvod_c[JJ];inc(IJ3);inc(II);
// with wArNumZoneVdod_c[JJ] do begin NTab:=II_Tabl+1; Itm3:=II;
StrN:=2318;mEd:=true;NPos:=0;Lev:=1;end;P3;ArP3[IJ3]:=@wArNumZoneVdod_c[JJ];inc(IJ3);inc(II);
// with wArNxod_c[JJ] do begin NTab:=II_Tabl+1; Itm3:=II;
StrN:=2319;mEd:=true;NPos:=0;Lev:=1;end;P3;ArP3[IJ3]:=@wArNxod_c[JJ];inc(IJ3);inc(II);
// with wArNcur_c[JJ] do begin NTab:=II_Tabl+1; Itm3:=II;
StrN:=2320;mEd:=true;NPos:=0;Lev:=1;end;P3;ArP3[IJ3]:=@wArNcur_c[JJ];inc(IJ3);inc(II);
// with wArParam_c[JJ] do begin NTab:=II_Tabl+1; Itm3:=II;
StrN:=2321;mEd:=true;NPos:=0;Lev:=1;end;P3;ArP3[IJ3]:=@wArParam_c[JJ];inc(IJ3);inc(II);
// with wArSw_c[JJ] do begin NTab:=II_Tabl+1; Itm3:=II; StrN:=2322;mEd:=true;NPos:=1;Lev:=1;end;P3;ArP3[IJ3]:=@wArSw_c[JJ];inc(IJ3);inc(II);
18. with wArNumKolc_top_c[JJ] do begin NRow:=1;NTab:=II_Tabl+1; ; Itm3:=II;
StrN:=2328;mEd:=true;NPos:=0;Lev:=1;end;P3;ArP3[IJ3]:=@wArNumKolc_top_c[JJ];inc(IJ3);inc(II);
with wArNumKolc_bot_c[JJ] do begin NRow:=1;NTab:=II_Tabl+1; Itm3:=II;
StrN:=2329;mEd:=true;NPos:=0;Lev:=1;end;P3;ArP3[IJ3]:=@wArNumKolc_bot_c[JJ];inc(IJ3);inc(II);
with wArNreek_ar[JJ] do begin NRow:=1;NTab:=II_Tabl+3; Itm3:=II;
StrN:=2313;mEd:=true;NPos:=0;Lev:=1;end;P3;ArP3[IJ3]:=@wArNreek_ar[JJ];inc(IJ3);inc(II);
with wArGshreik_ar[JJ] do begin NRow:=1;NTab:=II_Tabl+3; Itm3:=II;
StrN:=2314;mEd:=true;NPos:=2;Lev:=1;end;P3;ArP3[IJ3]:=@wArGshreik_ar[JJ];inc(IJ3);inc(II);
with wArGtreik_ar[JJ] do begin NRow:=1;NTab:=II_Tabl+3; Itm3:=II;
StrN:=2315;mEd:=true;NPos:=2;Lev:=1;end;P3;ArP3[IJ3]:=@wArGtreik_ar[JJ];inc(IJ3);inc(II);
with wArShreik_ar[JJ] do begin NRow:=1;NTab:=II_Tabl+3; Itm3:=II;
StrN:=2404;mEd:=true;NPos:=2;Lev:=1;end;P3;ArP3[IJ3]:=@wArShreik_ar[JJ];inc(IJ3);inc(II);
with wArNpr[JJ] do begin NRow:=1;NTab:=II_Tabl+3; Itm2:=II; StrN:=2369;mEd:=true;Lev:=1;end;P2;ArP2[IJ2]:=@wArNpr[JJ];inc(IJ2);inc(II);
with wArShpr[JJ] do begin NRow:=1;NTab:=II_Tabl+3; Itm1:=II;
StrN:=2245;mEd:=true;NPos:=2;Lev:=1;end;P1;ArP1[IJ1]:=@wArShpr[JJ];inc(IJ1);inc(II);
with wArRadZaz_w[JJ] do begin NRow:=1;NTab:=II_Tabl+1; Itm3:=II;
StrN:=2323;mEd:=true;NPos:=2;Lev:=1;end;P3;ArP3[IJ3]:=@wArRadZaz_w[JJ];inc(IJ3);inc(II);
with wArStr_os_w[JJ] do begin NRow:=1;NTab:=II_Tabl+1; Itm1:=II;
StrN:=2324;mEd:=true;NPos:=2;Lev:=1;end;P1;ArP1[IJ1]:=@wArStr_os_w[JJ];inc(IJ1);inc(II);
with wArPrizn_radop_w[JJ] do begin NRow:=1;NTab:=II_Tabl+1;
Itm4:=II;NTypChs:=0;StrN:=2325;mEd:=true;Lev:=1;end;P4;ArP4[IJ4]:=@wArPrizn_radop_w[JJ];inc(IJ4);inc(II);
with wArAxStr[JJ].awAxialStr do begin NRow:=1;NTab:=II_Tabl+5; Itm5:=II;
StrN:=2243;mEd:=true;Lev:=1;end;P5;ArP5[IJ5]:=@wArAxStr[JJ].awAxialStr;inc(IJ5);inc(II);
with wArYokeRast_bot_w[JJ] do begin NRow:=1;NTab:=II_Tabl+2; Itm1:=II;
StrN:=2265;mEd:=true;NPos:=2;Lev:=1;end;P1;ArP1[IJ1]:=@wArYokeRast_bot_w[JJ];inc(IJ1);inc(II);
with wArElectrH_w[JJ] do begin NRow:=1;NTab:=II_Tabl+2; Itm1:=II;
StrN:=2266;mEd:=true;NPos:=2;Lev:=1;end;P1;ArP1[IJ1]:=@wArElectrH_w[JJ];inc(IJ1);inc(II);
with wArElectr_centre[JJ] do begin NRow:=1;NTab:=II_Tabl+2; Itm1:=II;
StrN:=2395;mEd:=false;NPos:=1;Lev:=1;end;P1;ArP1[IJ1]:=@wArElectr_centre[JJ];inc(IJ1);inc(II);
with wArKanBottom[JJ] do begin NRow:=1;NTab:=II_Tabl+2; Itm3:=II;
StrN:=2341;mEd:=true;NPos:=2;Lev:=1;end;P3;ArP3[IJ3]:=@wArKanBottom[JJ];inc(IJ3);inc(II);
with wArKanTop[JJ] do begin NRow:=1;NTab:=II_Tabl+2; Itm3:=II;
StrN:=2342;mEd:=true;NPos:=2;Lev:=1;end;P3;ArP3[IJ3]:=@wArKanTop[JJ];inc(IJ3);inc(II);
with wArComIsZone[JJ] do begin NRow:=1;NTab:=II_Tabl+6; Itm1:=II;
StrN:=2339;mEd:=true;NPos:=2;Lev:=1;end;P1;ArP1[IJ1]:=@wArComIsZone[JJ];inc(IJ1);inc(II);
with wArMprIsZone[JJ] do begin NRow:=1;NTab:=II_Tabl+6; Itm1:=II;
StrN:=2340;mEd:=true;NPos:=2;Lev:=1;end;P1;ArP1[IJ1]:=@wArMprIsZone[JJ];inc(IJ1);inc(II);
with wArKus_pr[JJ] do begin NRow:=1;NTab:=II_Tabl+7; Itm1:=II;
StrN:=2249;mEd:=true;NPos:=3;Lev:=1;end;P1;ArP1[IJ1]:=@wArKus_pr[JJ];inc(IJ1);inc(II);
with wArKus_bm_is[JJ] do begin NRow:=1;NTab:=II_Tabl+7; Itm1:=II;
StrN:=2250;mEd:=true;NPos:=3;Lev:=1;end;P1;ArP1[IJ1]:=@wArKus_bm_is[JJ];inc(IJ1);inc(II);
19. with wArKus_ob_is[JJ] do begin NRow:=1;NTab:=II_Tabl+7; Itm1:=II;
StrN:=2251;mEd:=true;NPos:=3;Lev:=1;end;P1;ArP1[IJ1]:=@wArKus_ob_is[JJ];inc(IJ1);inc(II);
with wArKus_mpr_is[JJ] do begin NRow:=1;NTab:=II_Tabl+7; Itm1:=II;
StrN:=2252;mEd:=true;NPos:=3;Lev:=1;end;P1;ArP1[IJ1]:=@wArKus_mpr_is[JJ];inc(IJ1);inc(II);
// with wArKus_msl_is[JJ] do begin NRow:=1;NTab:=II_Tabl+7; Itm1:=II;
StrN:=2253;mEd:=true;NPos:=3;Lev:=1;end;P1;ArP1[IJ1]:=@wArKus_msl_is[JJ];inc(IJ1);inc(II);
with wArTypIsol[JJ] do begin NRow:=1;NTab:=II_Tabl+6;
Itm6:=II;NTypChs1:=2;StrN:=2254;mEd:=true;Lev:=1;end;P6;ArP6[IJ6]:=@wArTypIsol[JJ];inc(IJ6);inc(II);
with wArEndIsol_bot[JJ] do begin NRow:=1;NTab:=II_Tabl+6; Itm3:=II;
StrN:=2258;mEd:=true;NPos:=1;Lev:=1;end;P3;ArP3[IJ3]:=@wArEndIsol_bot[JJ];inc(IJ3);inc(II);
with wArEndIsol_top[JJ] do begin NRow:=1;NTab:=II_Tabl+6; Itm3:=II;
StrN:=2259;mEd:=true;NPos:=1;Lev:=1;end;P3;ArP3[IJ3]:=@wArEndIsol_top[JJ];inc(IJ3);inc(II);
with wArTypMat_end_top_w[JJ] do begin NRow:=1;NTab:=II_Tabl+6;
Itm6:=II;NTypChs1:=3;StrN:=2326;mEd:=true;Lev:=1;end;P6;ArP6[IJ6]:=@wArTypMat_end_top_w[JJ];inc(IJ6);inc(II);
with wArTypMat_end_bot_w[JJ] do begin NRow:=1;NTab:=II_Tabl+6;
Itm6:=II;NTypChs1:=3;StrN:=2327;mEd:=true;Lev:=1;end;P6;ArP6[IJ6]:=@wArTypMat_end_bot_w[JJ];inc(IJ6);inc(II);
with wArNst_top_isol[JJ] do begin NRow:=1;NTab:=II_Tabl+6; Itm3:=II;
StrN:=2332;mEd:=true;NPos:=0;Lev:=1;end;P3;ArP3[IJ3]:=@wArNst_top_isol[JJ];inc(IJ3);inc(II);
with wArNst_bot_isol[JJ] do begin NRow:=1;NTab:=II_Tabl+6; Itm3:=II;
StrN:=2333;mEd:=true;NPos:=0;Lev:=1;end;P3;ArP3[IJ3]:=@wArNst_bot_isol[JJ];inc(IJ3);inc(II);
with wArSh_top_isol[JJ] do begin NRow:=1;NTab:=II_Tabl+6; Itm3:=II;
StrN:=2334;mEd:=true;NPos:=2;Lev:=1;end;P3;ArP3[IJ3]:=@wArSh_top_isol[JJ];inc(IJ3);inc(II);
with wArSh_bot_isol[JJ] do begin NRow:=1;NTab:=II_Tabl+6; Itm3:=II;
StrN:=2335;mEd:=true;NPos:=2;Lev:=1;end;P3;ArP3[IJ3]:=@wArSh_bot_isol[JJ];inc(IJ3);inc(II);
with wArRad_top_isol[JJ] do begin NRow:=1;NTab:=II_Tabl+6; Itm3:=II;
StrN:=2336;mEd:=true;NPos:=2;Lev:=1;end;P3;ArP3[IJ3]:=@wArRad_top_isol[JJ];inc(IJ3);inc(II);
with wArRad_bot_isol[JJ] do begin NRow:=1;NTab:=II_Tabl+6; Itm3:=II;
StrN:=2337;mEd:=true;NPos:=2;Lev:=1;end;P3;ArP3[IJ3]:=@wArRad_bot_isol[JJ];inc(IJ3);inc(II);
// with wArPriznZakr[JJ] do begin NRow:=1;NTab:=II_Tabl+6; Itm3:=II;
StrN:=2338;mEd:=true;NPos:=0;Lev:=1;end;P3;ArP3[IJ3]:=@wArPriznZakr[JJ];inc(IJ3);inc(II);
//....
end;
Delphi
20. <?php
if ($_GET['code1c_Connected']=='') {
if ($_GET['type']!="shop") {
if ($_GET['type']!="lk") {
if ($_GET['type']!="home") {
if ($_GET['type']!="login_reg") {
if ($_GET['type']!="reg_quick") {
if ($_GET['type']!="order") {
if ($_GET['type']!="order_g") {
if ($GET['type']!="payment") {
if ($_GET['type']!='contakts') {
if ($_GET['type']!='contact_kiev_volinskaya47') {
if ($_GET['type']!='contact_kiev_lesi_ukrainki15') {
if ($_GET['type']!='contact_kiev_vozduhoflotskiy17') {
if ($_GET['type']!='contact_kiev_malinovskogo12') {
if ($_GET['type']!='contact_kiev_solomenskaya16') {
if ($_GET['type']!='contact_kiev_yakuba2') {
if ($_GET['type']!='contact_odessa_tiraspolskaya35') {
if ($_GET['type']!='contact_odessa') {
if ($_GET['type']!='contact_kharkov') {
if ($_GET['type']!='contact_kharkov_fonvizena18') {
if ($_GET['type']!='contact_dnepropetrovsk') {
if ($_GET['type']!='contact_dnepropetrovsk_suvorova14') {
if ($_GET['type']!='contact_donetsk') {
if ($_GET['type']!='contact_donetsk_shorsa24') {
if ($_GET['type']!='contact_zaporozhye') {
if ($_GET['type']!='contact_zaporozhye_borodinskaya52') {
if ($_GET['type']!='contact_sevastopol') {
if ($_GET['type']!='contact_sevastopol_vosstavshuh4') {
?>
PHP
22. if (result == true)
return true;
else
return result;
C++
23. if (var == true)
return true;
else if (var == false)
return false;
else
return (!false && !true);
C#
24. public boolean isEnabled(ClassX obj) {
boolean result = false;
if (obj.isEnabled() == true)
result = true;
else
result = false;
return result;
}
Java
48. public static void brute(long diap)
{
n = 68491; //задаем некое число
NewMessage("w8. Bruteforce working..."); //вызываем событие
for (int i = 0; i < diap; i++) //мутим цикл
{
d = i;
string brute = Convert.ToString(bug.Equals(n, d)); //сравниваем и
возвращаем результат в строку
if (brute == "True")
{
BruteComplete(d.ToString()); //вызываем событие при удачном
переборе
break;
}
}
if (ok == false)
{
NewMessage("Brete Failed:(");
}
}
C#