Návrhy vylepšení jazyka Delphi: Porovnání verzí
Skočit na navigaci
Skočit na vyhledávání
Bez shrnutí editace |
Bez shrnutí editace |
||
Řádek 78: | Řádek 78: | ||
</source> |
</source> |
||
=Definovat společný kořenový typ= |
|||
Jeho název by byl např. TType nebo prostě type. K němu také definovat typ ordinal jako kořenový pro celočíselné typy. To by mělo využití při použití generických typů při definici omezení constraint. |
|||
[[Kategorie:Programování]] |
[[Kategorie:Programování]] |
Aktuální verze z 12. 6. 2012, 07:15
Nepoužívaní globálních proměnných a funkcí
Přesun k plně objektovému programování. Nepoužívání globálních proměnných jako Application, FormX, Screen, Mouse, aj. Extrémně by byla použita pouze jediná globální proměnná něco jako System.
Namísto klasického
begin
Application.Initialize;
Application.CreateForm(TMainForm, MainForm);
Application.CreateForm(TSecondForm, SecondForm);
Application.Run;
end.
k objektovému
type
TMyApplication = class(TApplication)
MainForm: TMainForm;
SecondForm: TSecondForm;
constructor Create; override;
destructor Destroy; override;
end;
procedure TMyApplication.Create;
begin
inherited;
MainForm := TMainForm.Create(Self);
SecondForm := TSecondForm.Create(Self);
end;
procedure TMyApplication.Create;
begin
MainForm.Free;
SecondForm.Free;
inherited;
end;
Nabízet čistý typ interface bez počítání referencí
- V Delphi nelze používat interface bez počítání referencí. Lze pouze nadefinovat vlastní interface, kde funkce _AddRef a _Release nemají žádný účinek. Stále jsou však kompilátorem automaticky volány.
- Vyžaduje vyšší režii
- Při počítání referencí může docházek k vzniku uzavřených smyček, které nejsou automaticky uvolněny
- Vede ke složitějšímu ladění aplikace a vzniku dalších záludných chyb
- Kombinování tříd bez a s počítáním je jen velmi obtížně udržitelné
type
TSomeInterface = interface
end;
Umožnit definici proměnných v interface
- Použití property je v mnoha případech zbytečné a vede k další režii
- Použití property a metod Set a Get snižuje čitelnost definice
type
TSomeInterface = interface
Value: Byte;
end;
Přidat do jazyka podporu pro "objektové" elementární typy
Sloučit funkce a základní elementární typy do objektové formy. Základní typy se však kopírují jako přímá data, kdežto objekty jako reference.
type
TByte = class(IAssignable, IComparable, IOrdinal)
procedure Assign(Source: IAssignable); operator :=;
function EqualTo(Source: IComparable): TBoolean; operator =;
function LessThan(Source: IOrdinal): TBoolean; operator <;
procedure Inc;
procedure Dec;
...
end;
TRefByte = ^TByte;
Definovat společný kořenový typ
Jeho název by byl např. TType nebo prostě type. K němu také definovat typ ordinal jako kořenový pro celočíselné typy. To by mělo využití při použití generických typů při definici omezení constraint.