"সীম" শব্দটি বোঝার ক্ষেত্রে সমস্যা


20

আমি মার্ক সিমেনের "নেট মধ্যে ইনপেনডেন্সি ইনজেকশন ইন। নেট" পড়ছি (এটি দুর্দান্ত, এবং এটি অবশ্যই থাকতে পারে) এবং লেখক প্রায়শই "সিউম" শব্দটি ব্যবহার করেন। তবে আমি এর অর্থ কী বুঝতে পারি না। এই শব্দটি ব্যবহার করার উদাহরণ এখানে:

অধ্যায় 7 ব্যাখ্যা করে যে কীভাবে বিভিন্ন কংক্রিটের ফ্রেমওয়ার্কগুলিতে যেমন এএসপি.নেট এমভিসি, ডাব্লুপিএফ, ডাব্লুসিএফ এবং আরও অনেক কিছু তৈরি করা যায়। সমস্ত ফ্রেমওয়ার্কগুলি ডিআইকে সমানভাবে সমর্থন করে না এবং এমনকি এটির মধ্যেও, তারা যেভাবে এটি করে সেগুলি অনেক আলাদা। প্রতিটি কাঠামোর জন্য, সেই ফ্রেমটিতে ডিআইকে সক্ষম করে এমন এসএএম সনাক্ত করা কঠিন হতে পারে। যাইহোক, একবার সেমটি পাওয়া গেলে, আপনার কাছে সমস্ত আবেদনকারীর জন্য একটি সমাধান রয়েছে যা এই নির্দিষ্ট কাঠামোটি ব্যবহার করে। অধ্যায় 7 এ, আমি সবচেয়ে সাধারণ। নেট অ্যাপ্লিকেশন ফ্রেমওয়ার্কের জন্য এই কাজটি করেছি। এটিকে ফ্রেমওয়ার্ক SEAMS এর ক্যাটালগ হিসাবে ভাবেন।

এই শব্দটি বোঝার জন্য আমাকে সাহায্য করার জন্য আমি কৃতজ্ঞ হব।


3
লেখকের ব্লগে এই শব্দটির অর্থ কী তা সম্পর্কে ইঙ্গিত রয়েছে । এবং যেহেতু তিনি এখানে একজন সদস্য ছিলেন : @ মার্কসিম্যান এটি আপনার জন্য :)
ইয়ানিস

উত্তর:


25

আমি মনে করি লিগ্যাসি কোডের সাথে কার্যকরভাবে কাজ করা মাইকেল ফাদার থেকে এই শব্দটির উদ্ভব হয়েছে যেখানে তিনি সফ্টওয়্যারটির একটি অংশ হিসাবে এমন একটি জায়গা হিসাবে ব্যাখ্যা করেছিলেন যেখানে সফ্টওয়্যারটির দুটি অংশ মিলিত হয় এবং যেখানে অন্য কোনও কিছুতে ইনজেকশন দেওয়া যায়। সাদৃশ্যটি পোশাকের একটি সীম: যেখানে দুটি অংশ একসাথে সেলাই করা হয়। প্রতিটি পাশের টুকরাটি কেবল সিমে অন্য ডানদিকে স্পর্শ করে। সফ্টওয়্যারটিতে ফিরে যান: আপনি যদি সীমটি সনাক্ত করেন তবে আপনি সেই জায়গাটি চিহ্নিত করেছেন যেখানে একটি ভাল সংজ্ঞায়িত ইন্টারফেস রয়েছে। এটিই আপনি ডিআই-তে সুবিধা অর্জন করতে পারেন, যেহেতু এই জাতীয় ইন্টারফেস আপনাকে অন্য সফ্টওয়্যারটি বলতে সক্ষম না করে (প্রতারক ছাড়াই, যাই হোক না কেন) বাস্তবায়ন প্রতিস্থাপন করতে দেয়।


7
c2.com/cgi/wiki?SoftwareSeam - যাঁদের কাছে বইটি নেই তাদের একটি রেফারেন্স হিসাবে।
ইয়ানিস

আমি এখনই বইটি পড়ছি!
ম্যালফিস্ট

10
+1 টি FWIW, আমি পৃষ্ঠা 22. বিভাগে 1.3.1 মধ্যে ধারণা পরিচয় করিয়ে
মার্ক Seemann

13

খ্রিস্টানদের উত্তরের ভিত্তিতে, আমার জ্ঞানের সর্বোপরি, সীম শব্দটি ফিজার্স বই থেকে উদ্ভূত হয়েছে , লিগ্যাসি কোডের সাথে কার্যকরভাবে কাজ করা । সংজ্ঞাটি 31 পৃষ্ঠায় রয়েছে:

একটি সিম এমন একটি জায়গা যেখানে আপনি সেই জায়গায় না সম্পাদনা করেই আপনার প্রোগ্রামে আচরণ পরিবর্তন করতে পারেন।

কোনও সিম কী এবং এটি কী নয় এর উদাহরণ দিতে, নীচের জাভা কোডটি বিবেচনা করুন:

public class MyClass {
  private final Foo foo;

  public MyClass(Foo foo) {
    this.foo = foo;
  }

  public void doBunchOfStuff(BarFactory barFactory) {
    // foo.doStuff() is a seam because I can inject a mock instance of Foo
    this.foo.doStuff();

    // barFactory.makeBars() is a seam because I can replace the default
    // BarFactory instance with something else during testing
    List<Bar> bars = barFactory.makeBars();
    for(Bar bar : bars) {
      // bar.cut() is also a seam because if I can mock out BarFactory, then
      // I can get the mocked BarFactory to return mocked Bars.
      bar.cut();
    }

    // MyStaticClass.staticCall() is not a seam because I cannot replace
    // staticCall() with different behavior without calling a class besides
    // MyStaticClass, or changing the code in MyStaticClass.
    MyStaticClass.staticCall();

    // This is not a seam either because I can't change the behavior of what
    // happens when instanceCall() occurs with out changing this method or
    // the code in instanceCall().
    (new MyInstanceClass()).instanceCall();
  }
}

উপরে উদাহরণস্বরূপ seams seams হবে যদি না:

  1. ইঞ্জেকশন করা ক্লাসটি চূড়ান্ত is
  2. যে পদ্ধতিটি বলা হচ্ছে তা চূড়ান্ত।

মূলত, seams ইউনিট পরীক্ষা সহজতর। আমি না করার জন্য একটি ইউনিট পরীক্ষা লিখতে পারেন MyClassকারণ কলগুলির MyStaticClass.staticCall()এবং (new MyInstanceClass()).instanceCall()। জন্য কোন ইউনিট পরীক্ষা MyClassএর doBunchOfStuff()পদ্ধতি পরীক্ষা করতে হবে MyStaticClass.staticCall()এবং (new MyInstanceClass()).instanceCall()এবং সব যে বলা পেতে তাদের নির্ভরতা করুন। বিপরীতভাবে, অ চূড়ান্ত পদ্ধতিগুলি (বা আরও ভাল - ইন্টারফেস) সহ চূড়ান্ত ক্লাস ব্যবহার করে, মজাদার সুবিধাগুলি দ্বারা লেখার জন্য ইউনিট পরীক্ষা করা Fooএবং BarFactoryইউনিট পরীক্ষা করা MyClass

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.