реквестирую пакимона в тред...
Pushkoff
> реквестирую пакимона в тред...
Его, бедолагу, забыли разбанить :) Лишнее подтверждение того, что не нужен...
Не понял, у вас баны вручную снимаются?
Не читал всё, но копипаст одобряю в умеренном правильном и умном использовании...
Не брезгую копипастить как чужой код, так и свой... Частенько копипаст идёт целыми папками с исходниками и это нормально...
doc.
> Вероятность наличия ошибки в копируемом коде прямо пропорциональна количеству копий :)
Будто когда каждую копию переписываешь 10 раз ошибок можно сделать меньше... Ещё больше понаделать можно...
Executor
> Будто когда каждую копию переписываешь 10 раз ошибок можно сделать меньше...
> Ещё больше понаделать можно...
это был намек на то, что если ты используешь 10 одинаковых строк кода в 10 местех, то стоит преобразовать это в 10 вызовов функции....
Pushkoff
Это да...
TarasB
Так точно - вручную, если забудут - то навечно
вот маленький кусочек моего кода:
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
Executor
>Будто когда каждую копию переписываешь 10 раз ошибок можно сделать меньше...
Pushkoff
> это был намек на то, что если ты используешь 10 одинаковых строк кода в 10 местех, то стоит преобразовать это в 10 вызовов функции....
На самом деле это был намек в сторону "Закона Мёрфи" ;)
Также можно добавить, что и вероятность необходимости измения, в копируемом коде, возникнет тем вернее чем больше количество копий :D
WhiteWolf
> Так точно - вручную, если забудут - то навечно
О, песец, каменный век, прямо как в контакте.
Morphia
Капец, не проще ли кнопки генерить, чтобы было не копировать? Или сделать у них общий обработчик и воспользоваться возможностями делфы узнавать имя и тип компонента в период исполнения?
С кейсом - не лучше ли завести локальную константу
type TProc = procedure;
const CaseProcs: array [1 .. 19] of TProc = (...);
И вместо кейса вызвать CaseProcs[sial]? И говна будет меньше.
Morphia
Говнокод какойто...
Что-то из поста #0 не уловил взаимосвязи между копипастой и ООП.
P.S.: Ни разу не встречал программера, который ни разу в жизни не сделал копипаст.
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); ...
Обрати внимание, как порядок следования параметров и логика их наименования норовит уложиться в определённую систему (да и именование функций тоже). Помимо соображений логического единообразия (хотя они тоже незримо витают), тут есть совершенно практический аспект: такие декларации не набиваются с нуля, а штампуются копипастом с предыдущих и допиливаются.
Sbtrn. Devil
а я запихнул бы x и y в класс вектора... было бы удобнеее, больше смысла и меньше переменных...
Тема в архиве.