Я думал, я так себе программист, но меня посадили рефакторить код одного коллеги
От: Jack128  
Дата: 22.07.20 19:55
Оценка: :))) :))) :)
Из прекрасного:

if ((OutStyle and 34359738368) <> 0) and
        ((FormNum = 7) or (FormNum = 18)) and
        (((OutStyle and 70368744177664) = 0) or
          (((OutStyle and 70368744177664) <> 0) and (OneAct))) then
        NRow := BuildItogTwoPriceLevels(OO, true, false, ACell, -1, NRow, FormNum, OutStyle, nil, {[]}DocOptions, false)


if Trim(FName)='Пустой идентификатор' then Result := aNone
 else if Trim(FName)='Учитываемая позиция' then Result := aActivePos
 else if Trim(FName)='Номер позиции по смете' then Result := aNpp
 else if Trim(FName)='Номер позиции по порядку (в актах выполненных работ)' then Result := aNppImp
  // далее 900 таких же строк



// классы TSmeta/TCustomObjSmeta/TCennik - конкретные классы, все наследники базового класса, у которого как раз объявлено свойство DocSignatures
function GetSignByID(ToAct: boolean; ASmeta: TSmeta; ObjSm: TCustomObjSmeta; ACennik: TCennik; AResSummary: TResSummary;
AProjectSmeta: TProjectSmeta; AWV: TWorksVolumes; ADS: TDocSummary; TC: TTranspCalc; CaptionSign: boolean; IDS: integer; IDA: integer): string;
begin
....
if ObjSm<>nil then SSS := TGsDocSignatures(ObjSm.DocSignatures);
if ACennik<>nil then SSS := TGsDocSignatures(ACennik.DocSignatures);
if AResSummary<>nil then SSS := TGsDocSignatures(AResSummary.DocSignatures);
if AProjectSmeta<>nil then SSS := TGsDocSignatures(AProjectSmeta.DocSignatures);
if AWV<>nil then SSS := TGsDocSignatures(AWV.DocSignatures);
if ADS<>nil then SSS := TGsDocSignatures(ADS.DocSignatures);
if TC<>nil then SSS := TGsDocSignatures(TC.DocSignatures);

...
end;


if
(NeedResourceType(ARow) or ((RootType = rrtDeleted) and (exopDelRes in DocOptions)) and
((FormNum = 20) or (FormNum = 21) or (FormNum = 13))) or
(TSmetaResourceTypeEx(ResourceType) = smrtEquip) or
((FormNum <> 20) and (FormNum <> 21) and (FormNum <> 13))
then
if (((FormNum = 20) or (FormNum = 21) or (FormNum = 13)) and
// !
(((ReportString[sdmQtTot] = '') and
((OutStyle and 2097152) <> 0)) or
(ReportString[sdmQtTot] <> ''))) or
((FormNum <> 20) and (FormNum <> 21) and (FormNum <> 13))
then // !
begin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.