আমি জাভাতে সুইং ব্যবহার করে একটি স্কুল গ্রুপ প্রকল্প শুরু করছি। এটি ডেটাবেস ডেস্কটপ অ্যাপ্লিকেশনটিতে একটি সরল জিইউআই।
প্রফেসর আমাদের গত বছরের প্রকল্প থেকে কোড দিয়েছেন যাতে আমরা দেখতে পারি যে তিনি কীভাবে কাজ করেন। আমার প্রাথমিক ধারণাটি হ'ল কোডটি যতটা হওয়া উচিত তার চেয়ে অনেক জটিল, তবে আমি কল্পনা করি প্রোগ্রামাররা প্রায়শই কোডটি দেখেন যখন তারা কেবল লেখেননি this
আমি তার সিস্টেমটি ভাল বা খারাপ কেন কারণগুলি সন্ধান করতে চাইছি। (আমি অধ্যাপককে জিজ্ঞাসা করেছি এবং তিনি বলেছিলেন যে কেন এটি ভাল, যা আমাকে সন্তুষ্ট করে না আমি পরে তা দেখতে চাই see)
মূলত, তার অবিচলিত অবজেক্টস, মডেলগুলি (ব্যবসায়িক যুক্তি) এবং দর্শনগুলির মধ্যে কোনও মিলন এড়াতে, স্ট্রিং দিয়ে সবকিছু করা হয়। ডাটাবেসে সংরক্ষণ করা স্থিরযোগ্য অবজেক্টগুলি হ'ল স্ট্রিংগুলির হ্যাশ টেবিল এবং মডেলগুলি এবং দর্শনগুলি একে অপরের সাথে "সাবস্ক্রাইব" করে, তারা সাবস্ক্রাইব করা "ইভেন্ট" এর জন্য স্ট্রিং কী সরবরাহ করে।
যখন কোনও ইভেন্ট ট্রিগার করা হয়, তখন ভিউ বা মডেল তার সমস্ত গ্রাহকদের কাছে একটি স্ট্রিং প্রেরণ করে যারা সেই ইভেন্টটির জন্য কী করবেন তা স্থির করে। উদাহরণস্বরূপ, দৃশ্যের অ্যাকশন শ্রোতার একটি পদ্ধতিতে (আমি বিশ্বাস করি এটি কেবল অবিচলিত বস্তুর উপরে সাইকেলমেকফিল্ড সেট করে):
else if(evt.getSource() == bicycleMakeField)
{
myRegistry.updateSubscribers("BicycleMake", bicycleMakeField.getText());
}
সেই কলটি অবশেষে যানটির মডেলটিতে এই পদ্ধতিটিতে আসে:
public void stateChangeRequest(String key, Object value) {
... bunch of else ifs ...
else
if (key.equals("BicycleMake") == true)
{
... do stuff ...
অধ্যাপক বলেছেন যে স্টাফ করার এই পদ্ধতিটি ব্যবসায়ের লজিক অবজেক্টে কোনও পদ্ধতির কল হিসাবে ভিউ করার চেয়ে আরও বর্ধিত এবং রক্ষণাবেক্ষণযোগ্য। তিনি বলেছেন যে মতামত এবং মডেলগুলির মধ্যে কোনও মিল নেই কারণ তারা একে অপরের অস্তিত্ব সম্পর্কে জানেন না।
আমি মনে করি এটি একটি আরও খারাপ ধরণের মিলন, কারণ ভিউ এবং মডেলটিকে কাজ করতে একই স্ট্রিং ব্যবহার করতে হবে। আপনি যদি কোনও ভিউ বা মডেল সরিয়ে থাকেন, বা একটি স্ট্রিংয়ে টাইপো করেন তবে আপনার কোনও সংকলন ত্রুটি নেই। এটি কোডটি পুরোপুরি লম্বা করে তোলে যা আমার মনে হয় যে এটি হওয়া দরকার than
আমি তাঁর সাথে এটি নিয়ে আলোচনা করতে চাই, তবে তিনি তার শিল্পের অভিজ্ঞতাটি ব্যবহার করে আমি, অনভিজ্ঞ শিক্ষার্থী, যে কোনও যুক্তি তুলতে পারি না counter আমি কি অনুপস্থিত তার কিছু উপায় আছে?
স্পষ্ট করার জন্য, আমি উপরোক্ত পদ্ধতির সাথে তুলনা করতে চাই, দৃশ্যটি অবশ্যই মডেলের সাথে মিলিত হবে। উদাহরণস্বরূপ, আপনি গাড়ির মডেল অবজেক্টটি ভিউতে পাস করতে পারেন এবং তারপরে গাড়ির "মেক" পরিবর্তন করতে এটি করুন:
vehicle.make = bicycleMakeField.getText();
এটি কোডের 15 টি লাইন হ্রাস করবে যা কেবলমাত্র এক জায়গায় যানবাহনের মেকিং সেট করার জন্য ব্যবহৃত হয়, কোডের একক পঠনযোগ্য লাইনে। (এবং যেহেতু এই অ্যাপ্লিকেশনটিতে এই ধরণের অপারেশনটি কয়েকশবার করা হয়ে থাকে, তাই আমি মনে করি এটি পঠনযোগ্যতার পাশাপাশি সুরক্ষার জন্য একটি বড় জয় হবে))
হালনাগাদ
আমার দলনেতা এবং আমি স্ট্যাটিক টাইপিং ব্যবহার করে আমরা যেভাবে এটি করতে চেয়েছিলাম সেই কাঠামোর পুনর্গঠন করেছি, অধ্যাপককে অবহিত করেছিলেন এবং তাকে একটি ডেমো দিয়ে শেষ করেছি। তিনি এতটা উদার, যতক্ষণ আমরা তাকে সাহায্যের জন্য না বলি ততক্ষণ আমাদের ফ্রেমওয়ার্কটি ব্যবহার করতে দিন, এবং আমরা যদি আমাদের দলটির বাকী গতি অব্যাহত রাখতে পারি - যা আমাদের কাছে ন্যায্য বলে মনে হয়।