কিভাবে একটি পরিবর্তনশীল রাষ্ট্র প্রবর্তন করে?


11

আমি "সি ++ কোডিং স্ট্যান্ডার্ড" পড়ছিলাম এবং এই লাইনটি এখানে ছিল:

ভেরিয়েবলগুলি রাষ্ট্রের সাথে পরিচয় করিয়ে দেয় এবং আপনার যতটা সম্ভব সংক্ষিপ্ত জীবনের সাথে সংক্ষিপ্ত হওয়া উচিত life

এমন কিছু কি না যা পরিশেষে রাষ্ট্রকে হেরফের করে? কী আপনি সম্ভব হিসাবে সামান্য রাষ্ট্র হিসেবে সাথে মোকাবিলা করতে হবে মানে?

অপরিষ্কার ভাষায় যেমন সি ++ তে, রাজ্য পরিচালনা কি আসলে আপনি করছেন না? এবং পরিবর্তনশীল আজীবন সীমাবদ্ধতা ছাড়া যতটা সম্ভব রাষ্ট্রের সাথে সামঞ্জস্য করার অন্যান্য উপায় কী ?

উত্তর:


16

কোনও পরিবর্তনযোগ্য জিনিস কি সত্যই রাষ্ট্রের সাথে চালিত হয় না?

হ্যাঁ.

এবং "আপনার সামান্য রাষ্ট্রের সাথে মোকাবেলা করা উচিত" এর অর্থ কী?

এর অর্থ হ'ল কম রাজ্য বেশি রাজ্যের চেয়ে ভাল। আরও রাষ্ট্র আরও জটিলতার পরিচয় দেয়।

সি ++ এর মতো অপরিষ্কার ভাষায়, রাজ্য পরিচালনা কি আসলেই করছে না?

হ্যাঁ.

পরিবর্তনশীল আজীবন সীমাবদ্ধ করা ছাড়া "" সামান্য রাষ্ট্রের সাথে মোকাবিলা করার "অন্যান্য উপায়গুলি কী?

ভেরিয়েবলের সংখ্যা হ্রাস করুন। কোড বিচ্ছিন্ন করে যা কিছু রাজ্যকে স্ব-অন্তর্ভুক্ত ইউনিটে রূপান্তর করে যাতে অন্যান্য কোড বিভাগগুলি এটিকে উপেক্ষা করতে পারে।


9

কোনও পরিবর্তনযোগ্য জিনিস কি সত্যই রাষ্ট্রের সাথে চালিত হয় না?

হ্যাঁ. সি ++ এ কেবল পরিবর্তনযোগ্য জিনিসগুলি হ'ল (অ- const) পরিবর্তনশীল।

এবং "আপনার সামান্য রাষ্ট্রের সাথে মোকাবেলা করা উচিত" এর অর্থ কী?

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

সি ++ এর মতো অপরিষ্কার ভাষায়, রাজ্য পরিচালনা কি আসলেই করছে না?

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

পরিবর্তনশীল আজীবন সীমাবদ্ধ করা ছাড়া "" সামান্য রাষ্ট্রের সাথে মোকাবিলা করার "অন্যান্য উপায়গুলি কী?

অবজেক্টের মধ্যে সংযোগ কমাতে আধিপত্যের পাশাপাশি আজীবন সীমাবদ্ধ করুন; গ্লোবাল ভেরিয়েবলের চেয়ে স্থানীয় এবং পাবলিক অবজেক্টের সদস্যদের চেয়ে ব্যক্তিগতকে পছন্দ করুন।


5

রাষ্ট্রের অর্থ হল যে কোনও কিছু সংরক্ষণ করা হচ্ছে যাতে আপনি পরে তা উল্লেখ করতে পারেন।

একটি ভেরিয়েবল তৈরি করা, আপনার জন্য কিছু ডেটা সঞ্চয় করার জন্য কিছু জায়গা তৈরি করে। এই তথ্য রাষ্ট্র আপনার প্রোগ্রাম।

আপনি এটি দিয়ে জিনিসগুলি পরিবর্তন করতে, এটির সাথে গণনা করা ইত্যাদি ব্যবহার করেন

এই রাষ্ট্র , যেহেতু জিনিষ আপনি কি রাষ্ট্র নয়।

একটি কার্যকরী ভাষায়, আপনি বেশিরভাগই কেবল ফাংশন এবং চারপাশের ফাংশনগুলির সাথে व्यवहार করেন যেমন তারা বস্তু ছিল। যদিও এই ফাংশনগুলির কোনও স্থিতি নেই, এবং চারপাশে ফাংশনটি অতিক্রম করে, কোনও রাজ্যের পরিচয় দেয় না (এ ছাড়া এটি সম্ভবত ফাংশনের অভ্যন্তরে)।

সি ++ এ আপনি ফাংশন অবজেক্ট তৈরি করতে পারেন , যা structবা এমন classধরণের যা operator()()ওভারলোড হয়েছে। এই ফাংশন অবজেক্টগুলির স্থানীয় অবস্থা থাকতে পারে, যদিও এটি আপনার প্রোগ্রামের অন্যান্য কোডের মধ্যে অগত্যা ভাগ করা হয় না। ফ্যান্টেক্টরগুলি (অর্থাত ফাংশন অবজেক্টস) খুব সহজেই পার হয়ে যায়। এটি প্রায় কাছাকাছি যতটা আপনি সি ++ তে কার্যকরী দৃষ্টান্তের অনুকরণ করতে পারবেন। (আমি যতদূর জানি)

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


2

অন্যরা প্রথম 3 টি প্রশ্নের ভাল উত্তর সরবরাহ করেছে।

এবং পরিবর্তনশীল আজীবন সীমাবদ্ধকরণ ব্যতীত "যতটা সম্ভব সামান্য রাষ্ট্রের সাথে মোকাবিলা করার" উপায় আছে?

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

অন্যথায় আপনি রাষ্ট্রের প্রভাব সীমাবদ্ধ রেখে চলেছেন; হয় দৃশ্যমানতা বা আজীবন মাধ্যমে।


1

এবং "আপনার সামান্য রাষ্ট্রের সাথে মোকাবেলা করা উচিত" এর অর্থ কী?

এর অর্থ হ'ল আপনার ক্লাসগুলি যথাসম্ভব ছোট হওয়া উচিত, একক বিমূর্ততা উপস্থাপন করা। আপনি যদি আপনার ক্লাসে 10 ভেরিয়েবল রাখেন তবে সম্ভবত আপনি কিছু ভুল করছেন এবং আপনার ক্লাসটি কীভাবে রিফ্যাক্টর করবেন তা দেখতে হবে।


1

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

আপনি যদি এমন কোনও প্রোগ্রামের সাথে যদি কখনও কাজ করে থাকেন যাতে প্রচুর পরিমাণে বৈশ্বিক চলক থাকে তবে আপনি স্পষ্টভাবে বুঝতে পারবেন।


1

রাজ্যটি কেবল ডেটা সংরক্ষণ করা হয়। প্রতিটি পরিবর্তনশীল সত্যই এক প্রকারের রাজ্য, তবে আমরা সাধারণত অপারেশনগুলির মধ্যে অবিচল থাকা ডেটা উল্লেখ করতে "রাষ্ট্র" ব্যবহার করি। একটি সহজ, অর্থহীন উদাহরণস্বরূপ, যদি আপনি একটি বর্গ যে অভ্যন্তরীণভাবে একটি সঞ্চয় করে থাকতে পারে intএবং আছে increment()এবং decrement()সদস্য ফাংশন। এখানে, অভ্যন্তরীণ মানটি রাষ্ট্রীয় কারণ এটি এই শ্রেণীর উদাহরণের জন্য প্রাণবন্ত থাকে। অন্য কথায়, মান হ'ল অবজেক্টের অবস্থা।

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

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


1

এমন কিছু কি না যা পরিশেষে রাষ্ট্রকে হেরফের করে?

হ্যাঁ, তবে যদি এটি কোনও ছোট শ্রেণির সদস্য ফাংশনের পিছনে থাকে যা পুরো সিস্টেমের একমাত্র সত্তা যা তার ব্যক্তিগত রাষ্ট্রকে পরিচালনা করতে পারে, তবে সেই রাষ্ট্রের খুব সংকীর্ণ সুযোগ রয়েছে।

আপনার যতটা সম্ভব সামান্য রাষ্ট্রের সাথে মোকাবিলা করা উচিত?

ভেরিয়েবলের দৃষ্টিকোণ থেকে: কোডের কয়েকটি লাইন যতটা সম্ভব এটি অ্যাক্সেস করতে সক্ষম হওয়া উচিত। ভেরিয়েবলের সুযোগটি সর্বনিম্নে সঙ্কুচিত করুন।

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

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

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

অপরিষ্কার ভাষায় যেমন সি ++ তে, রাজ্য পরিচালনা কি আসলে আপনি করছেন না?

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

এবং পরিবর্তনশীল আজীবন সীমাবদ্ধতা ছাড়া যতটা সম্ভব রাষ্ট্রের সাথে সামঞ্জস্য করার অন্যান্য উপায় কী?

এগুলি সমস্ত একটি ভেরিয়েবলের সুযোগ সীমাবদ্ধ করার ক্ষেত্রের মধ্যে রয়েছে তবে এটি করার অনেকগুলি উপায় রয়েছে:

  • প্লেগের মতো কাঁচা বৈশ্বিক পরিবর্তনগুলি এড়িয়ে চলুন। এমনকি কিছু বোবা গ্লোবাল সেটার / গেটর ফাংশন সেই পরিবর্তনশীলটির দৃশ্যমানতাকে তীব্রতরভাবে সঙ্কুচিত করে এবং অন্তত আক্রমণকারীদের বজায় রাখার কিছু উপায়কে মঞ্জুরি দেয় (উদা: বিশ্বব্যাপী চলকটিকে কখনই aণাত্মক মান হিসাবে মঞ্জুরি দেওয়া উচিত না, সেটার সেই আক্রমণকারীটিকে বজায় রাখতে পারে)। অবশ্যই, অন্যথায় কী বৈশ্বিক পরিবর্তনশীল হবে তার উপরে একটি সেটার / গেটর ডিজাইনটি বেশ খারাপ নকশা, আমার বক্তব্যটি এখনও এটি আরও ভাল better
  • সম্ভব হলে আপনার ক্লাসগুলি আরও ছোট করুন। শত শ্রেণীর সদস্য ফাংশন, 20 সদস্যের ভেরিয়েবল এবং 30,000 লাইনের কোড প্রয়োগকারী একটি শ্রেণিতে এর পরিবর্তে "গ্লোবাল" বেসরকারী ভেরিয়েবল থাকবে, কারণ এই সমস্ত ভেরিয়েবলগুলি তার সদস্য ফাংশনে অ্যাক্সেসযোগ্য যা কোডের 30k লাইন নিয়ে গঠিত। আপনি সেই ক্ষেত্রে "রাষ্ট্রীয় জটিলতা" বলতে পারেন, তবে প্রতিটি সদস্যের কার্যক্রমে স্থানীয় ভেরিয়েবলকে ছাড় দেওয়া হয় 30,000*20=600,000। যদি তার উপরে 10 গ্লোবাল ভেরিয়েবলগুলি অ্যাক্সেসযোগ্য হয়, তবে রাষ্ট্র জটিলতা এর মতো হতে পারে 30,000*(20+10)=900,000। একটি স্বাস্থ্যকর "রাষ্ট্রীয় জটিলতা" (আমার ব্যক্তিগত ধরণের উদ্ভাবিত মেট্রিক) হাজার হাজার বা তার নিচে ক্লাসের জন্য থাকতে হবে, কয়েক হাজার নয়, এবং অবশ্যই কয়েক হাজার নয়। ফ্রি ফাংশনগুলির জন্য, রক্ষণাবেক্ষণের ক্ষেত্রে আমরা গুরুতর মাথাব্যথা পেতে শুরু করার আগে কয়েকশ বা নীচে বলুন।
  • উপরের মত একই শিরাতে কোনও সদস্য ফাংশন বা বন্ধু ফাংশন হিসাবে এমন কিছু বাস্তবায়ন করবেন না যা অন্যথায় কেবল শ্রেণীর পাবলিক ইন্টারফেস ব্যবহার করে ননমেম্বার, নন-ফ্রেন্ড হতে পারে। এই জাতীয় ফাংশন শ্রেণীর ব্যক্তিগত ভেরিয়েবলগুলিতে অ্যাক্সেস করতে পারে না এবং এইভাবে সেইসব ব্যক্তিগত ভেরিয়েবলের সুযোগ কমিয়ে ত্রুটির সম্ভাবনা হ্রাস করে।
  • ভেরিয়েবলগুলি আসলে কোনও ফাংশনে প্রয়োজনীয় হওয়ার অনেক আগে তার ঘোষনা করা থেকে বিরত থাকুন (অর্থাত্ লিগ্যাসি সি স্টাইলটি এড়িয়ে চলুন যা কোনও ফাংশনের শীর্ষে সমস্ত ভেরিয়েবল ঘোষণা করে এমনকি তাদের নীচে কেবল অনেকগুলি লাইনের প্রয়োজন থাকলেও)। যদি আপনি যাইহোক এই শৈলীটি ব্যবহার করেন তবে কমপক্ষে সংক্ষিপ্ত ফাংশনগুলির জন্য চেষ্টা করুন।

পরিবর্তনশীল ছাড়িয়ে: পার্শ্ব প্রতিক্রিয়া

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

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

এই জাতীয় ক্ষেত্রে, "রাষ্ট্র" ধারণাটি কাঁচা ভেরিয়েবলের বাইরে চলে যায়, এবং কেবল ডেটা স্ট্রাকচার এবং সেই ধরণের জিনিসগুলিতে to এটি একইভাবে তাদের ক্ষেত্র হ্রাস করতে সহায়তা করে (পরোক্ষভাবে তাদের রূপান্তর করতে পারে এমন ফাংশনগুলিকে কল করতে পারে এমন লাইনের সংখ্যা হ্রাস করতে)।

এখানে চিত্র বর্ণনা লিখুন

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

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

এই জাতীয় ক্ষেত্রে, এমনকি যদি ডেটা কাঠামো পুরোপুরি তার নিজস্ব আক্রমণকারীগুলি বজায় রাখে, বিচিত্র জিনিসগুলি বিস্তৃত স্তরে ঘটতে পারে (উদা: একটি অডিও প্লেয়ার সব ধরণের আক্রমণকারীকে বজায় রাখতে পারে যে ভলিউম স্তরটি কখনও 0% থেকে সীমার বাইরে যায় না ১০০%, তবে এটি প্লে বাটনে আঘাতকারী এবং ইভেন্টটি হিসাবে খেলতে শুরু করা এমন একটি ব্যতীত এলোমেলো অডিও ক্লিপটি থেকে এটি রক্ষা করে না যা প্লেলিস্টটিকে বৈধ উপায়ে পরিবর্তন করতে পারে তবে এখনও বিস্তৃত ব্যবহারকারীর দৃষ্টিকোণ থেকে অনাকাঙ্ক্ষিত, চটকদার আচরণ)।

এই জটিল পরিস্থিতিতে নিজেকে রক্ষা করার উপায় হ'ল কোডবেসে থাকা জায়গাগুলিকে "বাধা" দেওয়া যা ফাংশনগুলিকে কল করতে পারে যা শেষ পর্যন্ত এমনকি এই ধরণের সিস্টেমের বিস্তৃত দৃষ্টিকোণ থেকে কাঁচা অবস্থা এবং ইন্টারফেসের বাইরেও বাহ্যিক পার্শ্ব প্রতিক্রিয়া সৃষ্টি করে cause

এখানে চিত্র বর্ণনা লিখুন

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

এটি কেবলমাত্র জটিল কোডবেসের জন্য, যেমন একটি গেম যা ১০০ মিলিয়ন লাইন কোড বিস্তৃত হয়, তবে এটি আপনার সফ্টওয়্যারটির সঠিকতা সম্পর্কে যুক্তি করতে এবং আপনার পরিবর্তনগুলি অনুমানযোগ্য ফলাফলের ফলস্বরূপ সাহায্য করতে পারে, যখন আপনি সংখ্যাটি উল্লেখযোগ্যভাবে সীমাবদ্ধ / বাধা দেন finding সমালোচনার পরিবর্তন করতে পারে এমন জায়গাগুলির মধ্যে বলা হয়েছে যে পুরো আর্কিটেকচারটি সঠিকভাবে কাজ করতে চারদিকে ঘোরে।

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

রাষ্ট্র জটিলতা

এমনকি রাষ্ট্রের জটিলতাও বিবেচনায় নেওয়া বরং একটি গুরুত্বপূর্ণ কারণ। একটি সাধারণ কাঠামো, বিমূর্ত ইন্টারফেসের পিছনে ব্যাপকভাবে অ্যাক্সেসযোগ্য, গণ্ডগোল করা এতটা কঠিন নয় hard

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

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