ট্রানজিটিভ নির্ভরতার উপর নির্ভর করা বা তাদের স্পষ্টভাবে ঘোষণা করা কি ভাল?


11

আমার এইরকম একটি প্রকল্প কাঠামো রয়েছে:

My Project
  - Other Team's Project
     -Third Party Dependency

My Projectপ্রয়োজন Other Team's Projectক্রিয়াকলাপ, এবং উভয় My Projectএবং কাজ করা Other Team's Projectপ্রয়োজন Third Party Dependency। আমরা এগুলি পরিচালনা করতে নির্ভরতা পরিচালন ব্যবস্থা ব্যবহার করছি।

ডিজাইনের দৃষ্টিকোণ থেকে, My Projectট্রানসিটিভ নির্ভর করা ভাল Third Party Dependency? অথবা উভয়ের পক্ষে My Projectএবং Other Team's Projectউভয়ের পক্ষেই তারা যে ব্যবহার করেছে তা স্পষ্টভাবে ঘোষণা করা ভাল Third Party Dependency?

কয়েকটি অন্যান্য জিনিস:

  • উভয় প্রকল্পের একই সংস্করণ থাকা দরকার Third Party Dependency
  • এটি কোনও গ্যারান্টিযুক্ত নয় যে যদি Other Team's Projectআপডেট হয় তবে যা My Projectপরীক্ষা না করে পরীক্ষা নিরীক্ষণ করা হবে যাতে কিছুই ভঙ্গ হয় না, কারণ তারা বিভিন্ন দল দ্বারা পরিচালিত হয়।

উত্তর:


11

অন্য দল যদি তৃতীয় পক্ষের গ্রন্থাগারটি ব্যবহার না করেই একই প্রকল্পটি করতে তার প্রকল্পটিকে প্রত্যাখ্যান করে তবে কী হবে তা কল্পনা করুন । অথবা তারা একই কাজ করতে অন্য তৃতীয় পক্ষের লাইব্রেরিতে স্যুইচ করে। আপনার কোড এখনও কাজ করবে?

যদি এটি আপনার কোডটি কেবলমাত্র অন্য প্রকল্পের উপর নির্ভর করে, যদি না আপনার কোডটি তৃতীয় পক্ষের লাইব্রেরির উপরও নির্ভর করে।

উভয় প্রকল্পের একই সংস্করণ থাকা দরকার Third Party Dependency

এটি একটি শক্তিশালী সূচক যে আপনার প্রকল্পটি সরাসরি তৃতীয় পক্ষের লাইব্রেরির উপরও নির্ভর করে।


16

এটি বেশিরভাগ মতামত-ভিত্তিক আমার মনে হয় তবে আমি আমার 2 পি তে রাখব।

আমি সবসময় কাজ করেছি নিজেকে জিজ্ঞাসা করে হয়, কি জ্ঞান আমার কোড ন্যূনতম পরিমাণ চাহিদা তার করতে অনুমিত কি আছে?

যদি আমার কোডটি কেবলমাত্র কোড ব্যবহার করে Other team's libraryতবে আমি কেবল Other team's libraryনির্ভরতা হিসাবে অন্তর্ভুক্ত করব ।

যদি আমার কোড থেকেও কোড ব্যবহার করা হয় Third-party library, তবে আমি এটিকেও অন্তর্ভুক্ত করব।

আসুন আমি থেকে নিম্নোক্ত শ্রেণীর ছিল My Library, Other Libraryএবং Third-party Library(আমি উদাহরণ কোডের জন্য জাভা ব্যবহার করব)

package mylibrary;

import otherlibrary.Bar;

public class Foo {

    public void doFoo() {
        Bar bar = new Bar();
        bar.doBar();
    }
}

মধ্যে Other Library

package otherlibrary;

import thirdparty.Baz;

public class Bar {

    public void doBar() {
        Baz baz = new Baz();
        baz.doSomething();
    }
}

মধ্যে Third-party library

package thirdparty;

public class Baz {

    public void doBaz() {
        System.out.println("baz");
    }
}

কারণ আমার কোডটি Fooকেবলমাত্র কোডের উপর নির্ভর করে otherlibrary, আমি কেবল এটিই অন্তর্ভুক্ত করব, কারণ এটাই আমার যত্নশীল। আমি কেয়ার করি না কিভাবে otherlibrary.Bar#doBarকী যাই হোক না কেন এটা আছে, আমি শুধু এটা কি করতে চান।

তবে, আমরা এর সাথে কিছু করার মতো otherlibrary.Bar#doBarএকটি গ্রহণযোগ্যতা পরিবর্তন করেছি Bazlike

public void doBar(Baz baz) {
    baz.doBaz();
}

আমার তখন mylibrary.Foo#doFooএমন কিছু বদলাতে হবে

public void doFoo() {
    Bar bar = new Bar();
    Baz baz = new Baz();

    bar.doBar(baz);
}

কারণ আমি এখন আগ্রহী Bar#doBarতার জিনিস করতে যাচ্ছে, এবং আমার কোড প্রয়োজন জানেন যে সম্পর্কে Bazকি আমি এটা করতে চাও, আমি লাইব্রেরি আমি অন্তর্ভুক্ত সম্পর্কে স্পষ্ট হতে হবে।

যদি আমার কোডটি অবশ্যইthirdparty লাইব্রেরির মধ্যে থাকা জিনিসগুলি সম্পর্কে জানতে পারে তবে অবশ্যই আমি এটিকে নির্ভরতা হিসাবে অন্তর্ভুক্ত করব ।

যদিও সম্ভবত লেখকের Barএই বিবরণগুলির আরও বেশি গোপন করা উচিত তাই আমার thirdpartyগ্রন্থাগারটি অন্তর্ভুক্ত করার দরকার নেই ...


1
আমি এই জন্য সব। তবে নির্ভরতা নরক সর্বদা একটি সমস্যা হয় যদি উদাহরণস্বরূপ, আমি thirdypartyসংস্করণ 4 দিয়ে শুরু করি এবং otherlibraryসংস্করণ 3 প্রয়োজন you আপনি ভাবেন লোকেরা এটি সম্পর্কে কী করবেন?
থিয়াগো অ্যারেজ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.