ФлеймФорумПрограммирование

Копипаст-ориентированное программирование, как методология (3 стр)

Страницы: 1 2 3 4 5 6 Следующая »
#30
4:40, 12 сен 2010

реквестирую пакимона в тред...

#31
8:14, 12 сен 2010

Pushkoff
> реквестирую пакимона в тред...
  Его, бедолагу, забыли разбанить :) Лишнее подтверждение того, что не нужен...

#32
12:06, 12 сен 2010

Не понял, у вас баны вручную снимаются?

#33
16:08, 12 сен 2010

Не читал всё, но копипаст одобряю в умеренном правильном и умном использовании...
Не брезгую копипастить как чужой код, так и свой... Частенько копипаст идёт целыми папками с исходниками и это нормально...

doc.
> Вероятность наличия ошибки в копируемом коде прямо пропорциональна количеству копий :)

Будто когда каждую копию переписываешь 10 раз ошибок можно сделать меньше... Ещё больше понаделать можно...

#34
17:06, 12 сен 2010

Executor
> Будто когда каждую копию переписываешь 10 раз ошибок можно сделать меньше...
> Ещё больше понаделать можно...
это был намек на то, что если ты используешь 10 одинаковых строк кода в 10 местех, то стоит преобразовать это в 10 вызовов функции....

#35
17:40, 12 сен 2010

Pushkoff
Это да...

#36
17:58, 12 сен 2010

TarasB
Так точно - вручную, если забудут - то навечно

#37
19:31, 12 сен 2010

вот маленький кусочек моего кода:
AllCap - Все Caption - ны
AllBt - Все кнопки ( но все бывают разные )
***********************************
во втором примере - Case процедур
***********************************

procedure AllBt1S;
 begin
  if MD.sv2=1981 then exit else begin
   MD.sv2:=MD.sv2-1; OP1; RT1;MD.sv3:=b_i1; CBA1; CBA2; AllCap;
  end;
 end;

 procedure AllBt2S;
 begin
  if MD.sv2=2030 then exit else begin
   MD.sv2:=MD.sv2+1; OP1; RT1;MD.sv3:=b_i1; CBA1; CBA2; AllCap;
  end;
 end;
{**}
procedure TfmExample.BitBtn2Click(Sender: TObject);
 begin
  AllBt1S;
 end;

procedure TfmExample.BitBtn3Click(Sender: TObject);
 begin
  AllBt2S;
 end;

{****************}

procedure Sia1_case;
 begin
  case sia1 of
    1:begin OZ; end;
    2:begin FZ; end;
    3:begin LZ; end;
    4:begin SB1; end;
    5:begin SB2; end;
    6:begin ChtNcht; end;
    7:begin Null_Null; end;
    8:begin FRZ1; end;
    9:begin SRZ2; end;
   10:begin Fzmr2; end;
   11:begin Szmr2; end;
   12:begin Fzmr3; end;
   13:begin Szmr3; end;
   14:begin Fzm1_5; end;
   15:begin Szm1_5; end;
   16:begin Sbmr3; end;
   17:begin Sbbr2; end;
   18:begin Sbmr4; end;
   19:begin Sbr2_or_3; end;
  end;
 end;

Pushkoff
> в принципе да, но вот только этот код не имеет смысла копипастить, его быстрее
> набрать руками, так как это максимум 2-3 строки...
)))))))))))))))))))
особенно Case

Sbtrn. Devil
> Да, дельфистам особенно трудно. У них нет человеческих
> макроопределений.

> Один из наиболее загадочных навыков подсознания

вообще begin end можно (как и скобки) маркировать (и даже нужно)

begin // 1
 begin // 2
 ...
 end    // 2
end    // 1
#38
20:05, 12 сен 2010

Executor
>Будто когда каждую копию переписываешь 10 раз ошибок можно сделать меньше...
Pushkoff
> это был намек на то, что если ты используешь 10 одинаковых строк кода в 10 местех, то стоит преобразовать это в 10 вызовов функции....
На самом деле это был намек в сторону "Закона Мёрфи" ;)

Также можно добавить, что и вероятность необходимости измения, в копируемом коде, возникнет тем вернее чем больше количество копий :D

#39
21:56, 12 сен 2010

WhiteWolf
> Так точно - вручную, если забудут - то навечно

О, песец, каменный век, прямо как в контакте.

#40
22:00, 12 сен 2010

Morphia
Капец, не проще ли кнопки генерить, чтобы было не копировать? Или сделать у них общий обработчик и воспользоваться возможностями делфы узнавать имя и тип компонента в период исполнения?

С кейсом - не лучше ли завести локальную константу
type TProc = procedure;
const CaseProcs: array [1 .. 19] of TProc = (...);

И вместо кейса вызвать CaseProcs[sial]? И говна будет меньше.

#41
10:13, 13 сен 2010

Morphia
Говнокод какойто...

#42
20:40, 13 сен 2010

Что-то из поста #0 не уловил взаимосвязи между копипастой и ООП.

P.S.: Ни разу не встречал программера, который ни разу в жизни не сделал копипаст.

#43
21:48, 13 сен 2010

Barabus
> Что-то из поста #0 не уловил взаимосвязи между копипастой и ООП.
Это очень тонкий момент, на подробное описание которого и десяти постов не хватит.

Вот пример из-под руки. Пишу большой-пребольшой интерфейс, вот из него кусок:

...
void VisualizePickupWeaponL (int x,int y,int aInventoryIdx);
void SpecifySpellPickerL (int aSpellType,TLogicUnitCommand &aCommand);
void VisualizePickupSpellL (int x,int y,int aSpellType,int aHeroIdx);
void VisualizeSpellPumpedL (int aSpellType,int aHeroIdx);
void VisualizeWasteSpellL (int x,int y,int aSpellType);
...

Обрати внимание, как порядок следования параметров и логика их наименования норовит уложиться в определённую систему (да и именование функций тоже). Помимо соображений логического единообразия (хотя они тоже незримо витают), тут есть совершенно практический аспект: такие декларации не набиваются с нуля, а штампуются копипастом с предыдущих и допиливаются.

#44
22:09, 13 сен 2010

Sbtrn. Devil
а я запихнул бы x и y в класс вектора... было бы удобнеее, больше смысла и меньше переменных...

Страницы: 1 2 3 4 5 6 Следующая »
ФлеймФорумПрограммирование

Тема в архиве.