আমি ফিরে যেতে এবং ইউনিট পরীক্ষা যোগ করতে জাভাতে একটি মাঝারি আকারের প্রকল্পের একটি রিফ্যাক্টরিং হাতে নিয়েছি। আমি যখন বুঝতে পারি যে সিঙ্গেলন এবং স্ট্যাটিক্সকে উপহাস করার জন্য এটি কী বেদনাদায়ক ছিল, অবশেষে আমি তাদের সম্পর্কে এই মুহুর্তে যা পড়ছি তা "পেয়েছি"। (আমি সেই লোকদের মধ্যে একজন যাদের অভিজ্ঞতা থেকে শেখা দরকার needs ওহ ভাল।)
সুতরাং, এখন আমি বস্তুগুলি তৈরি করতে এবং তার চারপাশে তারের জন্য স্প্রিং ব্যবহার করছি, আমি static
বাম এবং ডান কীওয়ার্ডগুলি থেকে মুক্তি পাচ্ছি । (আমি যদি সম্ভবত এটির উপহাস করতে পারি, তবে ম্যাথ.অ্যাবস () ঠিক তাই বলেছে ঠিক একই অর্থে এটি স্থির নয়) কথাটি হ'ল, static
কোনও পদ্ধতি নির্ভর করে না বলে বোঝানোর অভ্যাসটি আমি অভ্যস্ত করেছিলাম যে কোনও বস্তুর স্থানে। উদাহরণ স্বরূপ:
//Before
import com.thirdparty.ThirdPartyLibrary.Thingy;
public class ThirdPartyLibraryWrapper {
public static Thingy newThingy(InputType input) {
new Thingy.Builder().withInput(input).alwaysFrobnicate().build();
}
}
//called as...
ThirdPartyLibraryWrapper.newThingy(input);
//After
public class ThirdPartyFactory {
public Thingy newThingy(InputType input) {
new Thingy.Builder().withInput(input).alwaysFrobnicate().build();
}
}
//called as...
thirdPartyFactoryInstance.newThingy(input);
সুতরাং, এখানে এটি স্পর্শকাতর হয়ে ওঠে। আমি পুরানো উপায়টি পছন্দ করেছি কারণ মূল চিঠিটি আমাকে বলেছিল যে, ম্যাথ.সিন (এক্স) এর মতো, থার্ড পার্টলি লাইব্রেরিআর্পার.নিউ থিঙ্গি (এক্স) প্রতিবার একই পদ্ধতিতে একই কাজ করেছিল। বস্তুটি যা করতে বলছে তা কীভাবে করে তা পরিবর্তন করার মতো কোনও অবজেক্টের অবস্থা নেই। আমি বিবেচনা করছি কিছু সম্ভাব্য উত্তর এখানে।
- অন্য কেউ এইভাবে অনুভব করে না তাই আমার মধ্যে কিছু ভুল আছে। সম্ভবত আমি সত্যিই ওওর কাজগুলি করার উপায়টি অভ্যন্তরীণ করে দেখিনি! হতে পারে আমি জাভাতে লিখছি তবে ফোরট্রান বা সামসুচে চিন্তা করছি। (যা চিত্তাকর্ষক হবে যেহেতু আমি কখনও ফোর্টরান লিখিনি written)
- কোড সম্পর্কিত যুক্তির উদ্দেশ্যে আমি অপরিবর্তনীয়তার জন্য এক প্রকার প্রক্সি হিসাবে স্থিতিশীলতা ব্যবহার করছি। যা বলা হচ্ছে, আমার কোডে কী কী ক্লু থাকা উচিত এটি বজায় রাখার জন্য বরাবর আসার জন্য কী আছে এবং কী নয়?
- আমি ভাল অবজেক্ট রূপক বেছে নিলে সম্ভবত এটি নিখরচায় আসা উচিত? উদাহরণস্বরূপ
thingyWrapper
শব্দটি শোনাচ্ছে না যে এটি মোড়কের স্টেট অবিচ্ছিন্নThingy
যা নিজেই পরিবর্তন হতে পারে। একইভাবে, এমনthingyFactory
শব্দগুলির মতো এটি অপরিবর্তনীয় হওয়া উচিত তবে এটি বিভিন্ন কৌশল থাকতে পারে যা সৃষ্টির সময়ে বেছে নেওয়া হয়।