সিঙ্গল এন্ট্রি, একক প্রস্থান (এসইএসই) এর এই ধারণাটি সি এবং অ্যাসেমব্লির মতো সুস্পষ্ট সংস্থান ব্যবস্থাপনার ভাষা থেকে আসে । সি তে, এর মতো কোডগুলি সংস্থানগুলি ফাঁস করবে:
void f()
{
resource res = acquire_resource(); // think malloc()
if( f1(res) )
return; // leaks res
f2(res);
release_resource(res); // think free()
}
এই জাতীয় ভাষায়, আপনার কাছে মূলত তিনটি বিকল্প রয়েছে:
ক্লিনআপ কোডটি প্রতিলিপি করুন।
বিতৃষ্ণা। অপ্রয়োজনীয়তা সবসময়ই খারাপ।
goto
ক্লিনআপ কোডে লাফ দিতে একটি ব্যবহার করুন ।
এটির জন্য ক্লিনআপ কোডটি ফাংশনের শেষ জিনিস হতে হবে। (এবং এ কারণেই কেউ কেউ যুক্তি দেয় যে goto
এর নিজস্ব জায়গা আছে And এবং এটি প্রকৃতপক্ষে - সি তে রয়েছে)
একটি স্থানীয় ভেরিয়েবল প্রবর্তন করুন এবং এটির মাধ্যমে নিয়ন্ত্রণ প্রবাহকে হেরফের করুন।
অসুবিধা (মনে করে যে, নিয়ন্ত্রণ প্রবাহ সিনট্যাক্স মাধ্যমে কাজে ব্যবহৃত হয় break
, return
, if
, while
) অনেক নিয়ন্ত্রণ প্রবাহ ভেরিয়েবল রাষ্ট্র মাধ্যমে কাজে ব্যবহৃত (কারণ যারা ভেরিয়েবল কোন রাষ্ট্র আছে যখন আপনি অ্যালগরিদম তাকান) তুলনায় অনুসরণ করা সহজ।
সমাবেশে এটি এমনকি অদ্ভুত, কারণ আপনি যখন কোনও ফাংশনটি কল করবেন তখন আপনি কোনও ফাংশনের যে কোনও ঠিকানায় ঝাঁপিয়ে পড়তে পারবেন, যার কার্যকরভাবে বোঝা যাচ্ছে যে কোনও ফাংশনে আপনার প্রায় সীমাহীন এন্ট্রি পয়েন্ট রয়েছে। (কখনও কখনও এটি সহায়ক হয় Such সি -++ তে একাধিক-উত্তরাধিকারের পরিস্থিতিগুলিতে ফাংশনগুলি this
কল করার জন্য পয়েন্টার অ্যাডজাস্টমেন্টটি কার্যকর করার জন্য সংকলকগণের জন্য এই অংশগুলি একটি সাধারণ কৌশল virtual
))
যখন আপনাকে ম্যানুয়ালি রিসোর্সগুলি পরিচালনা করতে হবে, কোনও ফাংশনে প্রবেশ বা প্রস্থান করার বিকল্পগুলি কাজে লাগানো আরও জটিল কোডের দিকে নিয়ে যায় এবং এর ফলে বাগগুলি হয়ে যায়। অতএব, ক্লিনার কোড এবং কম বাগ পাওয়ার জন্য একটি চিন্তার স্কুল উপস্থিত হয়েছিল যা SESE প্রচার করেছিল।
যাইহোক, যখন কোনও ভাষা ব্যতিক্রম বৈশিষ্ট্যযুক্ত, (প্রায়) কোনও ফাংশন অকাল আগে (প্রায়) যে কোনও বিন্দুতে উপস্থিত হতে পারে, সুতরাং আপনাকে যেকোনোভাবে অকাল ফেরতের ব্যবস্থা করতে হবে make (আমি মনে করি finally
মূলত জাভাতে এবং using
(বাস্তবায়নের সময় IDisposable
, finally
অন্যথায়) সি #; সি ++ এর পরিবর্তে আরআইআই নিয়োগ করে )) একবার আপনি এটি সম্পন্ন করার পরে, আপনি প্রাথমিক পর্যায়ে বক্তব্য দেওয়ার কারণে নিজেকে পরিষ্কার করতে ব্যর্থ হতে পারবেন নাreturn
, তবে সম্ভবত কি এসইএসই-র পক্ষে শক্তিশালী যুক্তি অদৃশ্য হয়ে গেছে।
যা পাঠযোগ্যতা ছেড়ে দেয়। অবশ্যই, অর্ধ ডজন return
বিবৃতি সহ একটি 200 এলওসি ফাংশন এলোমেলোভাবে এর উপরে ছিটানো ভাল প্রোগ্রামিং স্টাইল নয় এবং পঠনযোগ্য কোডের জন্য তৈরি করে না। তবে এই জাতীয় ফাংশনটি অকালপূর্ব রিটার্ন ব্যতীত বুঝতে সহজ হবে না।
যে ভাষাগুলিতে রিসোর্সগুলি ম্যানুয়ালি পরিচালিত হয় না বা করা উচিত নয়, সেখানে পুরানো এসইএসই কনভেনশন মেনে চলার কোনও মূল্য বা মূল্য নেই। ওটো, যেমন আমি উপরে যুক্তি দিয়েছি, এসইএসই প্রায়শই কোডকে আরও জটিল করে তোলে । এটি একটি ডাইনোসর যা (সি ব্যতীত) আজকের বেশিরভাগ ভাষায় ভাল ফিট করে না। কোডের বোধগম্যতাটিকে সহায়তা করার পরিবর্তে এটি এতে বাধা দেয়।
জাভা প্রোগ্রামাররা কেন এইভাবে আঁকড়ে থাকে? আমি জানি না, তবে আমার (বাইরের) পিওভি থেকে জাভা সি এর কাছ থেকে প্রচুর কনভেনশন নিয়েছিল (যেখানে তারা বোঝায়) এবং সেগুলি তার ওও বিশ্বে প্রয়োগ করা হয়েছে (যেখানে তারা অকেজো বা সম্পূর্ণ খারাপ) যেখানে এখন এটি আটকে রয়েছে তাদের, খরচ যাই হোক না কেন। (সুযোগের শুরুতে আপনার সমস্ত ভেরিয়েবল সংজ্ঞায়িত করার জন্য কনভেনশনটি পছন্দ করুন))
প্রোগ্রামাররা অযৌক্তিক কারণে সব ধরণের অদ্ভুত স্বরলিপিগুলিতে লেগে থাকে। (গভীরভাবে নেস্টেড স্ট্রাকচারাল স্টেটমেন্টগুলি - "তীরের শিরোনামগুলি" - পাস্কালের মতো ভাষায় একসময় সুন্দর কোড হিসাবে দেখা হত।) এ সম্পর্কে খাঁটি যৌক্তিক যুক্তি প্রয়োগ করা তাদের বেশিরভাগকে তাদের প্রতিষ্ঠিত উপায় থেকে বিচ্যুত করতে রাজি করতে ব্যর্থ বলে মনে হয়। এই ধরনের অভ্যাসগুলি পরিবর্তনের সর্বোত্তম উপায়টি হ'ল তাদের প্রথমে সর্বোত্তম কী করা উচিত তা শিখিয়ে দেওয়া, প্রচলিত কোনটি নয়। আপনি, একটি প্রোগ্রামিং শিক্ষক হয়ে, আপনার হাতে এটি।:)