বৃহত্তর অবজেক্টের মডেল দিয়ে তৃতীয় পক্ষের লাইব্রেরি মোড়ানোর জন্য ম্যানুয়াল প্রচেষ্টাটি আমি কীভাবে হ্রাস করতে পারি?


16

২০১২ সালের এই প্রশ্নের লেখক এবং এটি ২০১৩ সালের মতো , আমার কাছে একটি তৃতীয় পক্ষের লাইব্রেরি রয়েছে যা আমার অ্যাপ্লিকেশনটিকে সঠিকভাবে পরীক্ষা করার জন্য আমাকে মোড়ানো দরকার। শীর্ষ উত্তরে বলা হয়েছে:

আপনি সর্বদা একটি ইন্টারফেসের পিছনে তৃতীয় পক্ষের ধরণের এবং পদ্ধতিগুলি মোড়তে চান। এটি ক্লান্তিকর এবং বেদনাদায়ক হতে পারে। কখনও কখনও আপনি কোড জেনারেটর লিখতে পারেন বা এটি করার জন্য একটি সরঞ্জাম ব্যবহার করতে পারেন।

আমার ক্ষেত্রে, গ্রন্থাগারটি কোনও অবজেক্ট মডেলের জন্য এবং ফলস্বরূপ বিপুল সংখ্যক শ্রেণি এবং পদ্ধতি রয়েছে যা এই কৌশলটি সফল হওয়ার জন্য আবৃত করা দরকার। নিছক "ক্লান্তিকর এবং বেদনাদায়ক" এর বাইরেও এটি পরীক্ষার জন্য একটি কঠিন বাধা হয়ে দাঁড়ায়।

এই প্রশ্নের 4 বছর পরে, আমি সচেতন যে বিচ্ছিন্ন কাঠামো একটি দীর্ঘ পথ হয়েছে। আমার প্রশ্ন: তৃতীয় পক্ষের লাইব্রেরিগুলির পুরো মোড়কের প্রভাব অর্জনের জন্য এখন কি কোনও সহজ উপায় আছে? আমি কীভাবে এই প্রক্রিয়াটি থেকে যন্ত্রণাটি সরিয়ে নিয়ে ম্যানুয়াল প্রচেষ্টাটি হ্রাস করতে পারি?


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


আপনি কোন প্রোগ্রামিং ল্যাঙ্গুয়েজ এবং কোন ধরণের লাইব্রেরির কথা বলছেন?
ডক ব্রাউন

@ ডকব্রাউন সি # এবং একটি পিডিএফ ম্যানিপুলেশন লাইব্রেরি।
টম রাইট

2
আপনার প্রশ্নটি খোলার জন্য কিছু সমর্থন পেতে আমি মেটাতে একটি পোস্ট শুরু করেছি ।
ডক ব্রাউন

ধন্যবাদ @ ডকব্রাউন - আমি আশাবাদী যে এখানে কিছু আকর্ষণীয় দৃষ্টিভঙ্গি থাকবে।
টম রাইট

1
পরবর্তী 48 ঘন্টাগুলিতে যখন আমরা আরও ভাল উত্তর না পাই, আমি এটিতে অনুগ্রহ করব।
ডক ব্রাউন

উত্তর:


4

ধরে নিই যে আপনি কোনও উপহাসের কাঠামোটি খুঁজছেন না, কারণ তারা অতি-সর্বব্যাপী এবং সহজেই খুঁজে পাওয়া যায় , সামনে লক্ষ্য করার মতো কয়েকটি জিনিস রয়েছে:

  1. আপনার "সর্বদা" করা উচিত "কখনই" কিছু নেই।
    তৃতীয় পক্ষের লাইব্রেরিটি গুছিয়ে রাখা সর্বদা সেরা নয়। যদি আপনার অ্যাপ্লিকেশনটি অভ্যন্তরীণভাবে কোনও লাইব্রেরির উপর নির্ভরশীল, বা এটি আক্ষরিক অর্থে এক বা দুটি মূল লাইব্রেরির চারপাশে নির্মিত হয়, তবে এটিকে মোড়ানো আপনার সময় নষ্ট করবেন না। যদি গ্রন্থাগারগুলি পরিবর্তন হয় তবে আপনার অ্যাপ্লিকেশনটির যে কোনও উপায়ে পরিবর্তন করা দরকার
  2. ইন্টিগ্রেশন টেস্ট ব্যবহার করা ঠিক আছে।
    এটি বিশেষত এমন সীমানার চারপাশে সত্য যা স্থিতিশীল, আপনার প্রয়োগের অভ্যন্তরীণ বা সহজেই উপহাস করা যায় না। সেই শর্ত পূরণ হয়, মোড়ানো এবং বিদ্রূপকারী হবে জটিল এবং ক্লান্তিকর হবে না। সেক্ষেত্রে, আমি উভয়কে এড়িয়ে চলব: জড়ো করবেন না এবং উপহাস করবেন না; শুধু ইন্টিগ্রেশন পরীক্ষা লিখুন। (যদি স্বয়ংক্রিয় পরীক্ষার লক্ষ্য হয়))
  3. সরঞ্জাম এবং কাঠামো যৌক্তিক জটিলতা দূর করতে পারে না।
    নীতিগতভাবে, একটি সরঞ্জাম কেবল বয়লারপ্লেটে কাটা যেতে পারে। তবে, একটি জটিল ইন্টারফেস গ্রহণ এবং এটিকে সহজ করে তোলার জন্য কোনও স্বয়ংক্রিয়-সক্ষম অ্যালগরিদম নেই - আপনার প্রয়োজন অনুসারে ইন্টারফেস এক্স নিতে এবং এটি খাপ খাইয়ে দিন (কেবলমাত্র আপনি সেই অ্যালগরিদম জানেন !) সুতরাং, নিঃসন্দেহে এমন কিছু সরঞ্জাম রয়েছে যা পাতলা মোড়ক তৈরি করতে পারে , আমি পরামর্শ দিচ্ছি যে তারা ইতিমধ্যে সর্বব্যাপী নয় কারণ শেষ পর্যন্ত, আপনাকে এখনও বুদ্ধিমানভাবে কোড প্রয়োজন, এবং সুতরাং ম্যানুয়ালি, ইন্টারফেসের বিপরীতে এমনকি এটি কোনও মোড়কের আড়ালে লুকিয়ে রয়েছে।

এটি বলেছিল যে কোনও ক্লাসে সরাসরি উল্লেখ এড়াতে আপনি বিভিন্ন ভাষায় কৌশল অবলম্বন করতে পারেন। এবং কিছু ক্ষেত্রে, আপনি একটি ইন্টারফেস বা পাতলা মোড়কের "উপস্থিত" করতে পারেন যা বাস্তবে বিদ্যমান নেই। সি # তে, উদাহরণস্বরূপ, আমি দুটি রুটের একটিতে যাব:

  1. একটি কারখানা এবং অন্তর্নিহিত টাইপিং ব্যবহার করুন ।

আপনি এই ছোট কম্বো দিয়ে কোনও জটিল ক্লাসকে পুরোপুরি মোড়ানোর প্রচেষ্টা এড়াতে পারবেন:

// "factory"
class PdfDocumentFactory {
  public static ExternalPDFLibraryDocument Build() {
    return new ExternalPDFLibraryDocument();
  }
}

// code that uses the factory.
class CoreBusinessEntity {
  public void DoImportantThings() {
    var doc = PdfDocumentFactory.Build();

    // ... i have no idea what your lib does, so, I'm making stuff but.
    // but, you can do whatever you want here without explicitly
    // referring to the library's actual types.
    doc.addHeader("Wee");
    doc.getAllText().makeBiggerBy(4).makeBold().makeItalic();
    return doc.exportBinaryStreamOrSomething();
  }
}

যদি আপনি এই বিষয়গুলিকে সদস্য হিসাবে সংরক্ষণ করতে পারেন, হয় আরও "কার্যকরী" পদ্ধতির মাধ্যমে বা একটি অভিধানে (বা যে কোনও কিছু ) সংরক্ষণ করে , এই মূল পদ্ধতির সাথে আপনার মূল ব্যবসায়িক সংস্থাগুলি সঠিকভাবে জানা দরকার না করে সংকলন-সময়ের ধরণের পরীক্ষার সুবিধা রয়েছে তারা কোন শ্রেণীর সাথে কাজ করছে?

যা প্রয়োজন তা হ'ল সংকলনের সময়, আপনার কারখানায় ফিরে আসা ক্লাসটির আসলে সেই পদ্ধতি রয়েছে যা আপনার ব্যবসায়িক অবজেক্ট ব্যবহার করছে।

  1. গতিশীল টাইপিং ব্যবহার করুন ।

এটি অন্তর্নিহিত টাইপিংয়ের মতো একই শিরাতে , তবে অন্য ট্রেড অফের সাথে জড়িত: আপনি কম্পাইল-টাইপ চেকগুলি হারাবেন এবং বেনামে শ্রেণীর সদস্য হিসাবে বহিরাগত নির্ভরতা যুক্ত করার এবং আপনার নির্ভরতা ইনজেকশনের ক্ষমতা অর্জন করুন ।

class CoreBusinessEntity {
  dynamic Doc;

  public void InjectDoc(dynamic Doc) {
    Doc = doc;
  }

  public void DoImortantThings() {
    Doc.addHeader("Wee");
    Doc.getAllText().makeBiggerBy(4).makeBold().makeItalic();
    return Doc.exportBinaryStreamOrSomething();
  }
}

এই কৌশল উভয় সঙ্গে, যখন এটি উপহাস সময় আসে ExternalPDFLibraryDocument, আমি তার আগে বলেন, আপনি কি কিছু কাজ আছে - কিন্তু, এটা এর কাজ আপনাকে যা করতে হবে চাই যাহাই হউক না কেন । এবং, এই নির্মাণের সাহায্যে, আপনি ক্লান্তিকরভাবে 100 টি পাতলা ছোট মোড়কের ক্লাসগুলি সংজ্ঞায়িত করে এড়িয়ে গেছেন। আপনি কেবল থাকেন ব্যবহৃত - এটা সরাসরি খুঁজছেন ছাড়া গ্রন্থাগার অধিকাংশ অংশ জন্য।

এই সমস্ত বলেছে, তিনটি বড় কারণ রয়েছে যা আমি এখনও স্পষ্টভাবে একটি তৃতীয় পক্ষের লাইব্রেরি মোড়ক বিবেচনা করব - যার কোনটিই কোনও সরঞ্জাম বা কাঠামো ব্যবহার করার ইঙ্গিত দেবে না:

  1. নির্দিষ্ট গ্রন্থাগারটি অ্যাপ্লিকেশনটির অভ্যন্তরীণ নয় ।
  2. এটিকে গুটিয়ে না রেখে অদলবদল করা খুব ব্যয়বহুল হবে।
  3. আমি নিজেই এপিআই পছন্দ করি না।

এই তিনটি ক্ষেত্রেই যদি আমার কিছু স্তরের উদ্বেগ না থাকে তবে আপনি এটিকে মোড়ানোর জন্য কোনও উল্লেখযোগ্য প্রচেষ্টা করবেন না । এবং, যদি তিনটি ক্ষেত্রেই আপনার কিছু উদ্বেগ থাকে তবে একটি স্বয়ংক্রিয়ভাবে উত্পাদিত পাতলা মোড়ক আসলেই সহায়তা করে না।

আপনি যদি কোনও লাইব্রেরি গুটিয়ে রাখার সিদ্ধান্ত নিয়েছেন তবে আপনার সময়ের সবচেয়ে কার্যকর এবং কার্যকর ব্যবহার হ'ল ইন্টারফেসের বিরুদ্ধে আপনার অ্যাপ্লিকেশনটি তৈরি করা যা আপনি চান ; কোনও বিদ্যমান এপিআইয়ের বিরুদ্ধে নয়।

ক্লাসিকাল উপদেশটি মনোযোগ দিন: আপনি যা করতে পারেন তার প্রতিটি সিদ্ধান্ত স্থগিত করুন। প্রথমে আপনার আবেদনের "কোর" তৈরি করুন। ইন্টারফেসের বিরুদ্ধে কোড যা শেষ পর্যন্ত আপনি যা করতে চান তা করবে, যা শেষ পর্যন্ত "পেরিফেরিয়াল স্টাফ" দ্বারা পরিপূর্ণ হবে যা এখনও বিদ্যমান নেই। প্রয়োজনীয় ফাঁকগুলি ব্রিজ করুন।

এই প্রচেষ্টাটি সময়-সাশ্রয়ের মতো মনে হতে পারে না ; তবে আপনি যদি মনে করেন আপনার একটি মোড়কের দরকার হয় তবে এটি নিরাপদে এটি করার সবচেয়ে কার্যকর উপায়

এই ভাবে চিন্তা করুন।

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

TLDR

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

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


2
এটি প্রশ্নের উত্তর না দেওয়া অন্য পোস্ট - যা "কখন কখন মোড়ানো হবে" নয়, "কীভাবে ম্যানুয়াল প্রচেষ্টা কমাতে হবে" তা স্পষ্টভাবে ছিল না
ডক ব্রাউন

1
দুঃখিত, তবে আমি মনে করি আপনি প্রশ্নের মূল পয়েন্টটি মিস করেছেন। আপনার পরামর্শগুলি মোড়ানোর ক্ষেত্রে কোনও ম্যানুয়াল প্রচেষ্টা কীভাবে হ্রাস করতে পারে তা আমি দেখতে পাচ্ছি না । ধরে নিই যে স্টাবিতে থাকা লিবিয়ের কয়েকটি জটিল ক্লাস এবং শত শত পদ্ধতি সহ এপিআই হিসাবে একটি জটিল অবজেক্টের মডেল রয়েছে। এটির স্ট্যান্ডার্ড ব্যবহারের জন্য এপিআই ঠিক আছে, তবে কম ব্যথা / প্রচেষ্টার সাথে ইউনিট পরীক্ষার জন্য এটি কীভাবে মোড়ানো যায়?
ডক ব্রাউন

1
TLDR; আপনি যদি বোনাস পয়েন্ট চান তবে আমাদের এমন কিছু বলুন যা আমরা ইতিমধ্যে জানি না ;-)
ডক ব্রাউন

1
@ ডকব্রাউন আমি পয়েন্টটি মিস করি নি। তবে, আমি মনে করি আপনি আমার উত্তরটির বিন্দুটি মিস করেছেন। সঠিক প্রচেষ্টা বিনিয়োগ আপনার প্রচুর কাজ বাঁচায়। পরীক্ষার নিদর্শন রয়েছে - তবে এটি কেবলমাত্র একটি পার্শ্ব প্রতিক্রিয়া। একটি লাইব্রেরির চারপাশে স্বয়ংক্রিয়ভাবে পাতলা মোড়ক তৈরি করার জন্য একটি সরঞ্জাম ব্যবহার করা এখনও আপনার মূল লাইব্রেরিটি অন্য কারও এপিআই এর চারপাশে তৈরি করে এবং মকস তৈরি করছে - যা আপনি প্রচুর চেষ্টা করছেন যা আপনি লাইব্রেরিটি বাইরে রেখে যেতে চাইলে এড়াতে পারবেন না is আপনার পরীক্ষার।
এসভিডজেন

1
@ ডকব্রাউন এটি অবাস্তব is "এই শ্রেণীর সমস্যাগুলির কি এক ধরণের সরঞ্জাম বা পদ্ধতি রয়েছে?" হ্যাঁ. অবশ্যই আছে। প্রতিরক্ষামূলক কোডিং এবং ইউনিট পরীক্ষাগুলি সম্পর্কে গোড়াপত্তন করা না ... যেমন আমার উত্তর বলে। আপনি যদি করেনি একটি স্বয়ংক্রিয়ভাবেই আপনার উত্পন্ন পাতলা মোড়কের আছে, কি মান এটা প্রদান করবে !? ... এটি আপনাকে পরীক্ষার জন্য নির্ভরতা ইনজেকশনের অনুমতি দেয় না, আপনাকে এখনও এটি ম্যানুয়ালি করতে হবে। এবং এটি আপনাকে লাইব্রেরিটি অদলবদল করতে দেয় না, কারণ আপনি এখনও লাইব্রেরির এপিআইয়ের বিরুদ্ধে কোডিং করছেন ... এটি এখন কেবল পরোক্ষ।
এসভিডজেন

9

কোডটি ইউনিট পরীক্ষা করবেন না। পরিবর্তে ইন্টিগ্রেশন পরীক্ষা লিখুন। কিছু ক্ষেত্রে, ইউনিট পরীক্ষা করা, উপহাস করা বিরক্তিকর এবং বেদনাদায়ক। ইউনিট পরীক্ষাগুলি খনন করুন এবং প্রকৃতপক্ষে বিক্রেতাদের কল আউট করার জন্য ইন্টিগ্রেশন পরীক্ষা লিখুন।

দ্রষ্টব্য, এই পরীক্ষাগুলি পোস্ট মোতায়েনের স্বয়ংক্রিয় ক্রিয়াকলাপ হিসাবে স্থাপনার পরে চালানো উচিত। এগুলি ইউনিট পরীক্ষার অংশ বা বিল্ড প্রক্রিয়ার অংশ হিসাবে চালিত হয় না।

কখনও কখনও একটি ইন্টিগ্রেশন পরীক্ষা আপনার অ্যাপ্লিকেশন নির্দিষ্ট কিছু ইউনিট পরীক্ষার চেয়ে ভাল ফিট। কোডগুলি "টেস্টযোগ্য" বানাতে হুপসের মধ্যে দিয়ে যেতে হবে কখনও কখনও ক্ষতিকারক।


2
আমি যখন আপনার উত্তরটি পড়েছিলাম তখন প্রথমে আমি ভেবেছিলাম "পিডিএফের জন্য অবাস্তব, কারণ বাইনারি স্তরের ফাইলগুলির তুলনা করা আপনাকে কী পরিবর্তন হয়েছে বা যদি পরিবর্তন সমস্যাজনিত হয় তবে তা আপনাকে জানায় না"। তারপরে আমি এই পুরানো এসও পোস্টটি পেয়েছি , এটি সম্ভবত কাজ করতে পারে তা নির্দেশ করে (সুতরাং +1)।
ডক ব্রাউন

@ ডকব্রাউনটি এসও লিঙ্কে থাকা সরঞ্জাম পিডিএফটির সাথে বাইনারি স্তরের তুলনা করে না। এটি পৃষ্ঠাগুলির গঠন এবং বিষয়বস্তুর তুলনা করে। পিডিএফ অভ্যন্তরীণ কাঠামো: safaribooksonline.com/library/view/pdf-explained/9781449321581/…
লিনাক্সুনিল

1
@ লিনাক্সুনিল: হ্যাঁ, আমি জানি, আমি যেমন লিখেছি, প্রথমে আমি ভেবেছিলাম ... তবে তারপরে আমি উপরে উল্লিখিত সমাধানটি পেয়েছি।
ডক ব্রাউন

ওহ .. আমি দেখছি .. সম্ভবত আপনার উত্তরের ফাইনালে 'এটি সম্ভবত কাজ করতে পারে' আমাকে বিভ্রান্ত করেছে।
লিনাক্সুনিল

1

আমি যেমন বুঝতে পেরেছি, এই আলোচনাটি মোড়ানো ধারণা এবং বাস্তবায়ন গাইডলাইনের চেয়ে মোড়ক তৈরির জন্য অটোমেশনের সুযোগগুলিকে কেন্দ্র করে । আমি ইতিমধ্যে ধারণা সম্পর্কে বিমূর্ত করার চেষ্টা করব কারণ এখানে এটি সম্পর্কে ইতিমধ্যে অনেক কিছু রয়েছে।

আমি দেখতে পাচ্ছি যে আমরা .NET প্রযুক্তিগুলি প্রায় খেলছি, সুতরাং আমাদের হাতে শক্তিশালী প্রতিফলন ক্ষমতা রয়েছে। আপনি বিবেচনা করতে পারেন:

  1. নেট র‍্যাপার ক্লাস জেনারেটরের মতো সরঞ্জাম । আমি সেই সরঞ্জামটি ব্যবহার করি নি এবং আমি জানি যে এটি কোনও উত্তরাধিকার প্রযুক্তির স্ট্যাকের উপর পরিচালিত হয়, তবে সম্ভবত আপনার ক্ষেত্রে এটি উপযুক্ত। অবশ্যই কোডের মান, নির্ভরতা ইনভার্শন এবং ইন্টারফেস পৃথককরণের জন্য সমর্থন আলাদাভাবে তদন্ত করা উচিত। হয়তো এর মতো অন্যান্য সরঞ্জাম রয়েছে তবে আমি খুব বেশি অনুসন্ধান করিনি।
  2. আপনার নিজস্ব সরঞ্জাম লেখা যা জনসাধারণের পদ্ধতি / ইন্টারফেসের জন্য রেফারেন্সড অ্যাসেমব্লিতে অনুসন্ধান করবে এবং ম্যাপিং এবং কোড উত্পন্ন করবে। সম্প্রদায়ের অবদানকে স্বাগত জানানোর চেয়ে আরও বেশি কিছু হবে!
  3. নেট। কেস না হলে ... সম্ভবত এখানে দেখুন ।

আমি বিশ্বাস করি যে এই ধরনের অটোমেশন একটি বেস পয়েন্ট গঠন করতে পারে তবে চূড়ান্ত সমাধান নয়। ম্যানুয়াল কোড রিফ্যাক্টরিংয়ের প্রয়োজন হবে ... বা সবচেয়ে খারাপ ক্ষেত্রে একটি নতুন ডিজাইন হিসাবে আমি সুইডজেন যা লিখেছি তাতে সম্পূর্ণরূপে একমত:

আপনি যে ইন্টারফেসটি চান তার বিরুদ্ধে আপনার অ্যাপ্লিকেশন তৈরি করুন; তৃতীয় পক্ষের API এর বিরুদ্ধে নয়।


ঠিক আছে, অন্তত একটি ধারণা কিভাবে সমস্যা পারে পরিচালনা করা। তবে এই ব্যবহারের ক্ষেত্রে নিজের অভিজ্ঞতার ভিত্তিতে নয়, আমি ধরে নিই?
ডক ব্রাউন

প্রশ্নটি সফ্টওয়্যার ইঞ্জিনিয়ারিং ডোমেন সম্পর্কিত আমার নিজের অভিজ্ঞতার উপর ভিত্তি করে (মোড়ক, প্রতিবিম্ব, ডিআই)! সরঞ্জামগুলি সম্পর্কে - আমি asnwer হিসাবে বর্ণিত হিসাবে এটি ব্যবহার করিনি।
tom3k

0

মোড়ক লাইব্রেরি তৈরি করার সময় এই নির্দেশিকা অনুসরণ করুন:

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

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