আমি একজন ডেলফি প্যাস্কাল প্রোগ্রামার, আমি সর্বশেষতম এম্বারকাডেরো ডেলফি এক্সই ব্যবহার করি এবং আমি মডেল ভিউ নিয়ামক এবং মডেল ভিউ-মডেলের মতো নকশার ধরণগুলির সুবিধা নিতে চাই।
যাইহোক, পাস্কলে এটি করার সর্বোত্তম অনুশীলনগুলি সম্পর্কে ওয়েবে তেমন কিছু নেই বলে মনে হয়। আমি যে উদাহরণগুলি খুঁজে পেতে পারি তার মধ্যে বেশিরভাগ উদাহরণ সি # তে রয়েছে এবং কিছু ভাষার বৈশিষ্ট্য পাস্কলে উপস্থিত নেই, যার অর্থ আমাকে সেই বৈশিষ্ট্যগুলি প্রয়োগ করার উপায়গুলি খুঁজে পেতে হতে পারে।
আমি এখানে এই নিবন্ধ থেকে কোড মানিয়ে নেওয়ার চেষ্টা করছি
আমি যে সমস্যার মুখোমুখি হয়েছি তার তালিকা করব
- অবিচ্ছিন্ন প্রকার
সি # এর মতো ন্যাসযোগ্য প্রকারগুলি প্যাসকের নেই তাই আমি নিজের তৈরি করেছি।
TNullable<T> = record
strict private
fHasValue : boolean;
fValue : T;
function GetValue:T;
procedure SetValue(newValue : T);
public
property HasValue : boolean read fHasValue;
property Value : T read GetValue write SetValue;
procedure SetToNull;
end;
বাস্তবায়ন বিভাগে
function TNullable<T>.GetValue:T;
begin
if fHasValue then
begin
Result := fValue;
end
else raise Exception.Create('Value Not Set');
end;
procedure TNullable<T>.SetValue(newValue : T);
begin
fValue := newValue;
fHasValue := true;
end;
procedure TNullable<T>.SetToNull;
begin
fHasValue := false;
end;
- বৈশিষ্ট্যগুলির জন্য পান / সেট করুন
এখন যেহেতু আমার একটি প্রবণতাযুক্ত টাইপ আছে আমি অযোগ্য বৈশিষ্ট্য তৈরি করতে পারি তবে এটি কিছু কোডের গন্ধ নিয়ে আসে
উদাহরণস্বরূপ যদি আমি তৈরি করি
TFoo = class
private
function GetBar:TNullable<Integer>;
procedure SetBar(x:TNullable<Integer>);
public
property Bar : TNullable<Integer> read GetBar write SetBar;
বাস্তবায়ন বিভাগে
function TFoo.GetBar:TNullable<Integer>;
begin
if **valueExists** then
begin
Result.Value := **the value**
end else
begin
Result.SetToNull;
end;
end;
procedure TFoo.SetBar(x:TNullable<Integer>);
begin
if X.hasValue then
begin
//Store/show value here
end else
begin
//handle null assignment here
end;
end;
এটি ঠিক আছে তবে যখন এই বৈশিষ্ট্যগুলি ব্যবহার করার কথা আসে তখন আমি কেবল ব্যবহার করতে পারি না
myFoo.Bar.Value: = 1;
আমি ব্যবহার করতে
var
myBar : TNullable<Integer>;
begin
myBar.Value := 1;
myFoo.Bar := myBar;
end;
যা কিছুটা মেসেঞ্জার। আমি মনে করি এটি সম্পর্কে আমি কিছুই করতে পারি না।
- বিজ্ঞপ্তি রেফারেন্স
আমি ক্লাসটি বিভিন্ন ইউনিটে বিভক্ত করতে চাই।
অর্থাৎ,
ব্যবহারকারী ইন্টারফেসটি নিয়ন্ত্রণ যুক্তি এবং মডেল এবং ডেটা লজিক স্তর থেকে পৃথক করে রাখছে।
আমার এমন পরিস্থিতি থাকতে পারে যেখানে 2 শ্রেণি একে অপরকে রেফারেন্স করতে পারে। যদিও এটি এমন পরিস্থিতি যে বেশিরভাগ ক্ষেত্রে আমি এড়াতে চাই, এমন অনুষ্ঠানগুলি রয়েছে যেখানে এটির প্রয়োজন।
উদাহরণ স্বরূপ
unit u_A;
interface
uses
u_B
;
type
TA = class
public
Foo : TB;
end;
implementation
end;
এবং অন্য ইউনিট
unit u_B;
interface
uses
u_A
;
type
TB = class
public
Foo : TA;
end;
implementation
end;
এই কোডটি ভাঙ্গা হয়েছে কারণ দুটি ক্লাস একে অপরকে অন্তর্ভুক্ত করে এবং এটি পাস্কেলে করা যায় না। এটি সি # তে তেমন সমস্যা নয়। সমাধানগুলি যা আমি ভাবতে পারি: ১. একই ইউনিটে উভয় শ্রেণি অন্তর্ভুক্ত করুন, যদিও আমি যদি মনে করি না যে এটি নকশাকে স্যুট করে। ২. বি এর জন্য অন্য একটি প্যারেন্ট ইন্টারফেস তৈরি করুন এবং সেখান থেকে বি উত্তরাধিকারী হবেন, তারপরে এটি এর চারপাশে চলে আসে gets যদিও এটি এমন একটি সাধারণ কাজের জন্য অগোছালো।
- স্ট্যাটিক ক্লাস
ডেলফিতে কোনও স্ট্যাটিক ক্লাস নেই, এগুলি নিয়ন্ত্রণ শ্রেণীর জন্য দরকারী।
- ডেলফিতে ব্যবহার করার জন্য সেরা কনটেইনার ক্লাস
আমি বর্তমানে জেনারিক্সে টিলিস্ট এবং টোবজেক্টলিস্ট ব্যবহার করছি Col সংগ্রহগুলি সেগুলি ডেল্ফি এক্সইয়েতে প্রবর্তিত হয়েছিল আমি আশা করি যে এইগুলি ব্যবহার করার জন্য সেরা since
আমি এখনও ইভেন্ট হ্যান্ডলারগুলি এবং সেখানে উত্থিত যে কোনও সমস্যা সম্পর্কে ভাবছি। সম্ভবত আরও কিছু সমস্যা আছে যা আমি এখনও ভাবিনি।
কোন পরামর্শের জন্য ধন্যবাদ।