আমরা আমাদের ব্যবসায়িক সামগ্রীর অনেকগুলি ইউনিট টেস্টিং এবং রিফ্যাক্টরিং করছি, এবং অন্যান্য সমবয়সীদের তুলনায় ক্লাস ডিজাইনের বিষয়ে আমার খুব আলাদা মতামত রয়েছে বলে মনে হচ্ছে ।
একটি উদাহরণ বর্গ যা আমি ভক্ত নই:
public class Foo
{
private string field1;
private string field2;
private string field3;
private string field4;
private string field5;
public Foo() { }
public Foo(string in1, string in2)
{
field1 = in1;
field2 = in2;
}
public Foo(string in1, string in2, string in3, string in4)
{
field1 = in1;
field2 = in2;
field3 = in3;
}
public Prop1
{ get { return field1; } }
{ set { field1 = value; } }
public Prop2
{ get { return field2; } }
{ set { field2 = value; } }
public Prop3
{ get { return field3; } }
{ set { field3 = value; } }
public Prop4
{ get { return field4; } }
{ set { field4 = value; } }
public Prop5
{ get { return field5; } }
{ set { field5 = value; } }
}
"আসল" শ্রেণিতে এগুলি সমস্ত স্ট্রিং নয়, তবে কিছু ক্ষেত্রে সম্পূর্ণ জনসাধারণের সম্পত্তি হিসাবে আমাদের 30 টি ব্যাকিং ফিল্ড রয়েছে।
আমি এই শ্রেণিকে ঘৃণা করি এবং আমি জানি না আমি কেবল পিক হয়ে যাচ্ছি কিনা। নোটের কয়েকটি বিষয়:
- বৈশিষ্ট্যগুলিতে কোনও যুক্তি ছাড়াই ব্যক্তিগত ব্যাকিং ক্ষেত্রগুলি অপ্রয়োজনীয় বলে মনে হয় এবং ক্লাসটি ব্লাট করে
- একাধিক কনস্ট্রাক্টর (কিছুটা ঠিক আছে) তবে এর সাথে মিলিত হয়েছে
- সমস্ত সম্পত্তি পাবলিক সেটারযুক্ত, আমি কোনও অনুরাগী নই।
- খালি কনস্ট্রাক্টরের কারণে কোনও বৈশিষ্ট্যই কোনও মান নির্ধারিত হবে না, যদি একজন কলার অজানা থাকে তবে আপনি আচরণের জন্য পরীক্ষা করতে খুব সম্ভবত অবাঞ্ছিত হতে পারেন।
- এটি অনেক সম্পত্তি! (30 ক্ষেত্রে)
আমি বাস্তবায়নকারী হিসাবে যেকোন সময়ে কোনও সময়ে অবজেক্টটি কী অবস্থায় রয়েছে তা সত্যিই জানতে আরও বেশি সমস্যা অনুভব করি Foo
। যুক্তিটি তৈরি করা হয়েছিল " Prop5
অবজেক্ট তৈরির সময় আমাদের কাছে প্রয়োজনীয় তথ্য নাও থাকতে পারে Ok ঠিক আছে, আমি অনুমান করি যে আমি এটি বুঝতে পারি, তবে যদি এটি হয় তবে কেবল Prop5
সেটারটিকেই সর্বজনীন করুন, সবসময় কোনও শ্রেণীর 30 টি সম্পত্তি নয়।
আমি কি "সহজ লেখার (সর্বজনীন)" লেখার বিপরীতে "সহজেই ব্যবহারযোগ্য" এমন শ্রেণি চাইবার জন্য কি নিট-পিক এবং / বা পাগল হয়ে যাচ্ছি? উপরের মতো ক্লাসগুলি আমাকে চিৎকার করে, আমি জানি না এটি কীভাবে ব্যবহৃত হবে, তাই আমি কেবল সবকিছু ক্ষেত্রে সর্বজনীন করে তুলছি ।
যদি আমি ভয়ঙ্করভাবে পিক না হয়ে থাকি তবে এই ধরণের চিন্তাভাবনার বিরুদ্ধে লড়াই করার জন্য ভাল যুক্তিগুলি কী কী? আমি যুক্তিগুলি উচ্চারণে খুব ভাল নই, কারণ আমি আমার বক্তব্যটি জানতে ইচ্ছাকৃতভাবে হতাশ হয়ে পড়েছি (ইচ্ছাকৃতভাবে নয়)।
get
set