1. স্ট্যাটিক বনাম উদাহরণ
আমি মনে করি যে ওওর ডিজাইনটি কী ভাল এবং কী নয় সে সম্পর্কে খুব স্পষ্ট নির্দেশিকা রয়েছে। সমস্যাটি হ'ল ব্লগস্ফিয়ার ভালকে খারাপ এবং কুশ্রী থেকে আলাদা করা কঠিন করে তোলে। আপনি জানতে পারেন কিছু এমনকি খারাপ অভ্যাস আপনি মনে করতে পারেন সমর্থন রেফারেন্স ধরনের।
এবং আমি যে সবচেয়ে খারাপ অনুশীলনটি ভাবতে পারি তা হ'ল গ্লোবাল স্টেট, আপনার উল্লেখ করা স্ট্যাটিকগুলি এবং প্রত্যেকের প্রিয় সিঙ্গলটন সহ including Misko Hevery এর থেকে কিছু উদ্ধৃতাংশ বিষয়ে সর্বোত্তম নিবন্ধ ।
সত্যিকারের নির্ভরতাগুলি বুঝতে, বিকাশকারীদের অবশ্যই কোডের প্রতিটি লাইন পড়তে হবে। এটি দূরত্বে স্পোকি অ্যাকশন তৈরি করে: যখন পরীক্ষা স্যুটগুলি চালানো হয়, এক পরীক্ষায় গ্লোবাল স্টেট পরিবর্তিত হয় পরবর্তী বা সমান্তরাল পরীক্ষাটি অপ্রত্যাশিতভাবে ব্যর্থ হতে পারে। ম্যানুয়াল বা গুইস নির্ভরতা ইনজেকশন ব্যবহার করে স্থির নির্ভরতা ভেঙে দিন।
দূরত্বের স্পোকি অ্যাকশনটি এমন হয় যখন আমরা বিশ্বাস করি যে আমরা একা বিচ্ছিন্ন বলে বিশ্বাস করি (যেহেতু আমরা কোনও রেফারেন্সই পাস করি নি) তবে অপ্রত্যাশিত মিথস্ক্রিয়া এবং রাষ্ট্রীয় পরিবর্তন সিস্টেমের দূরবর্তী স্থানে ঘটে থাকে যা আমরা অবজেক্টটিকে জানাতে পারি নি। এটি কেবল বিশ্ব রাষ্ট্রের মাধ্যমেই ঘটতে পারে।
আপনি এর আগে এইভাবে ভেবে দেখেননি, তবে আপনি যখনই স্থিতাবস্থা ব্যবহার করেন, আপনি গোপন যোগাযোগের চ্যানেল তৈরি করছেন এবং এপিআইতে তাদের পরিষ্কার করে দিচ্ছেন না। দূরত্বের স্পোকি অ্যাকশন বিকাশকারীদের সম্ভাব্য মিথস্ক্রিয়াগুলি বোঝার জন্য কোডের প্রতিটি লাইন পড়তে বাধ্য করে, বিকাশকারী উত্পাদনশীলতা হ্রাস করে এবং নতুন দলের সদস্যদের বিভ্রান্ত করে।
এটি কীভাবে ফুটে উঠেছে তা হ'ল আপনার কোনওরকম সঞ্চিত স্টেট রয়েছে এমন স্থির রেফারেন্স সরবরাহ করা উচিত নয়। আমি পরিসংখ্যানগুলির ব্যবহারের একমাত্র স্থান হ'ল গণিত ধ্রুবকগুলির জন্য এবং এটির সম্পর্কে আমারও বিভ্রান্তি রয়েছে।
২. ইনপুট পরামিতি সহ পদ্ধতিগুলি এবং মানগুলির সাথে বনাম কোনও কিছুই নয় methods
আপনার যে জিনিসটি অনুধাবন করা দরকার তা হ'ল যে পদ্ধতিগুলির কোনও ইনপুট প্যারামিটার নেই এবং কোনও আউটপুট প্যারামিটারগুলি অভ্যন্তরীণভাবে সঞ্চিত কিছু স্টেটের (অন্যথায় তারা কী করছে?) কাজ করার গ্যারান্টিযুক্ত। এখানে সম্পূর্ণ ভাষা রয়েছে যা সঞ্চিত রাষ্ট্র এড়ানোর ধারণার ভিত্তিতে নির্মিত।
যে কোনও সময় আপনি রাষ্ট্র সংরক্ষণ করেছেন, আপনার পার্শ্ব-প্রতিক্রিয়া হওয়ার সম্ভাবনা রয়েছে, তাই নিশ্চিত হয়ে নিন যে আপনি সর্বদা এটি মনযোগ দিয়ে ব্যবহার করেছেন। এটি বোঝায় যে আপনি সংজ্ঞায়িত ইনপুট এবং / অথবা আউটপুটগুলির সাথে ফাংশন পছন্দ করতে পারেন ।
এবং, প্রকৃতপক্ষে, ফাংশনগুলি যা ইনপুট এবং আউটপুট সংজ্ঞায়িত করেছে তা পরীক্ষা করা আরও সহজ - আপনাকে এখানে কোন ফাংশন চালাতে হবে না এবং সেখানে কী ঘটেছে তা দেখার জন্য সেখানে আপনাকে কোনও সম্পত্তি সেট করতে হবে না somewhere অন্যথায় আপনি পরীক্ষা অধীনে ফাংশন চালানোর আগে।
আপনি স্ট্যাটিক্স হিসাবে এই ধরণের ফাংশনটি নিরাপদে ব্যবহার করতে পারেন । তবে আমি তা করব না, কারণ আমি যদি পরে পরবর্তীকালে নতুন কার্যকারিতাটির সাথে অন্যরকম উদাহরণ সরবরাহ না করে কোথাও কোথাও এই ফাংশনটির কিছুটা ভিন্ন বাস্তবায়ন ব্যবহার করতে চাই, তবে কার্যকারিতা প্রতিস্থাপনের কোনও উপায় নিয়ে আমি আটকে আছি।
৩. ওভারল্যাপিং বনাম ডিস্টিন্ট
আমি প্রশ্নটি বুঝতে পারি না। 2 ওভারল্যাপিং পদ্ধতিতে কী সুবিধা হবে?
৪. বেসরকারী বনাম পাবলিক
আপনার প্রকাশের দরকার নেই এমন কিছু প্রকাশ করবেন না। তবে, আমি ব্যক্তিগত কোনও বড় ভক্ত নই। আমি সি # বিকাশকারী নই, তবে অ্যাকশনস্ক্রিপ্ট বিকাশকারী। আমি অ্যাডোব এর ফ্লেক্স ফ্রেমওয়ার্ক কোডে অনেক সময় ব্যয় করেছি, যা ২০০ circ এর সার্কায় লেখা হয়েছিল। এবং তারা কী প্রাইভেট বানাবেন তার কিছু খারাপ পছন্দ করেছেন, যা তাদের ক্লাসগুলি প্রসারিত করার চেষ্টা করার মতো দুঃস্বপ্নের মতো করে তোলে।
সুতরাং আপনি যদি না ভাবেন যে আপনি অ্যাডোব বিকাশকারীদের 2007 এর চেয়ে আরও ভাল স্থপতি (আপনার প্রশ্ন থেকে, আমি বলতে চাই যে আপনি দাবি করার সুযোগ পাওয়ার আগে আপনার আরও কয়েক বছর রয়েছে), আপনি সম্ভবত সুরক্ষিতকে ডিফল্ট করতে চান ।
আপনার কোড উদাহরণগুলির সাথে কিছু সমস্যা রয়েছে যার অর্থ তারা ভাল-স্থাপত্যবিদ নয়, সুতরাং এ বা বি বাছাই করা সম্ভব নয়
একটি জিনিসের জন্য, আপনার সম্ভবত আপনার অবজেক্ট তৈরির ব্যবহার থেকে এটি আলাদা করা উচিত । সুতরাং new XMLReader()
যেখানে এটি ব্যবহৃত হয় তার পাশে আপনার সাধারণত আপনার অধিকার থাকে না ।
এছাড়াও, @ ডিজেএনএ যেমন বলেছে, আপনার এক্সএমএল রিডার ব্যবহারে ব্যবহৃত পদ্ধতিগুলি আপনার নিজের করা উচিত, সুতরাং আপনার এপিআই (উদাহরণস্বরূপ) এটিকে সহজতর করা যেতে পারে:
_document Document = reader.read(info);
সি # কীভাবে কাজ করে তা আমি জানি না, তবে যেহেতু আমি বেশ কয়েকটি ওয়েব প্রযুক্তির সাথে কাজ করেছি, আমার সন্দেহ আছে যে আপনি সর্বদা এক্সএমএল ডকুমেন্টকে তাত্ক্ষণিকভাবে ফিরিয়ে দিতে সক্ষম হবেন না (সম্ভবত প্রতিশ্রুতি বা ভবিষ্যতের ধরণ হিসাবে অবজেক্ট), তবে আমি আপনাকে সি # তে একটি অ্যাসিনক্রোনাস লোড কীভাবে পরিচালনা করবেন সে বিষয়ে পরামর্শ দিতে পারছি না।
নোট করুন যে এই পদ্ধতির সাহায্যে আপনি বেশ কয়েকটি বাস্তবায়ন তৈরি করতে পারেন যা একটি প্যারামিটার নিতে পারে যেখানে কোনও XML অবজেক্টটি কোথায় পড়তে হবে এবং ফিরে আসতে হবে এবং আপনার প্রকল্পের প্রয়োজনের ভিত্তিতে সেগুলি অদলবদল করতে পারে। উদাহরণস্বরূপ, আপনি সরাসরি কোনও ডাটাবেস থেকে, কোনও স্থানীয় স্টোর থেকে, বা, আপনার মূল উদাহরণ হিসাবে, কোনও URL থেকে পড়তে পারেন। আপনি যদি স্ট্যাটিক পদ্ধতি ব্যবহার করেন তবে আপনি এটি করতে পারবেন না।