ফাংশনাল স্টাইলে প্রোগ্রামিং করার সময়, আপনি কি অ্যাপ্লিকেশন লজিকের মাধ্যমে বুনছেন এমন একক অ্যাপ্লিকেশন স্টেট রয়েছে?


12

নিম্নলিখিত পদ্ধতিতে সমস্ত এমন একটি সিস্টেম আমি কীভাবে তৈরি করব :

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

আমার কাছে মনে হয় যে রাজ্য মনড নিয়ম # 2 ভঙ্গ করে, যদিও এটি স্পষ্ট নয় কারণ এটি মোনাডের মাধ্যমে বুনে।

আমার মনে হয় আমার কোনওভাবে লেন্স ব্যবহার করা দরকার তবে এটি অ-কার্যকরী ভাষার জন্য খুব কম লেখা হয়।

পটভূমি

অনুশীলন হিসাবে, আমি আমার বিদ্যমান অ্যাপ্লিকেশনগুলির একটিকে একটি অবজেক্ট ভিত্তিক শৈলী থেকে একটি কার্যকরী শৈলীতে রূপান্তর করছি। প্রথম জিনিসটি আমি যা করার চেষ্টা করছি তা হ'ল যথাসম্ভব অ্যাপ্লিকেশনটির অভ্যন্তরীণ-কোরটি তৈরি করা।

একটি জিনিস আমি শুনেছি যে কীভাবে "রাষ্ট্র "কে নিখুঁত-কার্যকরী ভাষায় পরিচালনা করতে হবে এবং আমি বিশ্বাস করি যে এটি রাষ্ট্রীয় মনাদ দ্বারা সম্পন্ন হয়েছে, এটি কি যুক্তিযুক্তভাবে আপনি একটি খাঁটি ফাংশন বলছেন," রাষ্ট্রের মধ্য দিয়ে যাওয়ার সময়? পৃথিবী যেমন হয় ", তারপরে যখন ফাংশনটি ফিরে আসে, এটি আপনাকে পরিবর্তিত হিসাবে বিশ্বের অবস্থা ফিরে আসে।

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

তার উপর ভিত্তি করে আমি আমার অ্যাপ্লিকেশনটি দিয়েছিলাম এবং: 1. প্রথমে আমার সমস্ত অ্যাপ্লিকেশন স্থিতিকে একটি একক বিশ্বব্যাপী বস্তুতে (গেমস্টেট) রাখুন 2. দ্বিতীয়ত, আমি গেমস্টেটকে অনিবার্য করে তুলেছি। আপনি এটি পরিবর্তন করতে পারবেন না। আপনার যদি পরিবর্তন দরকার হয় তবে আপনাকে একটি নতুন তৈরি করতে হবে। আমি একটি অনুলিপি-নির্মাণকারী যুক্ত করে এটি করেছি, এটি বিকল্প বা এক বা একাধিক ক্ষেত্র নেয় যা পরিবর্তিত হয়েছিল। ৩. প্রতিটি অ্যাপ্লিকেশনটিতে আমি পরামিতি হিসাবে গেমস্টেটে পাস করি। ফাংশনটির মধ্যে, এটি যা করতে চলেছে তা করার পরে, এটি একটি নতুন গেমস্টেট তৈরি করে এবং এটি ফিরিয়ে দেয়।

আমার কীভাবে খাঁটি ফাংশনাল কোর এবং বাইরের একটি লুপ রয়েছে যা গেমস্টেটটিকে অ্যাপ্লিকেশনের মূল ওয়ার্কফ্লো লুপে ফিড করে।

আমার প্রশ্ন:

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

সে সম্পর্কে কিছু ভুল বলে মনে হচ্ছে। ফাংশনটির পুরো গেমস্টেটের প্রয়োজন হয় না। এটি কেবল স্কোর অবজেক্টের প্রয়োজন। সুতরাং আমি স্কোর পাস করার জন্য এটি আপডেট করেছি, এবং শুধুমাত্র স্কোর ফিরে।

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

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

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

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


1
আমি ডিজাইন এবং বিশেষভাবে ক্রিয়ামূলক কোনও বিশেষজ্ঞ নই, তবে প্রকৃতি অনুসারে আপনার গেমটির একটি রাজ্য বিবর্তিত হয়েছে, আপনি কি নিশ্চিত যে ফাংশনাল প্রোগ্রামিং এমন একটি দৃষ্টান্ত যা আপনার অ্যাপ্লিকেশনের সমস্ত স্তরগুলিতে ফিট করে?
ওয়ালফ্র্যাট

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

আপনার প্রশ্নটি আমার কাছে বিস্তৃত মনে হয়েছে যা কেবলমাত্র জানিয়েছে। থাকেন তাহলে সেটি শুধুমাত্র পরিচালনার রাজ্যের সম্পর্কে এখানে একটি সূচনা: উত্তর এবং মধ্যে লিঙ্কটি দেখতে stackoverflow.com/questions/1020653/...
Walfrat

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

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

উত্তর:


2

আমি কোনও ভাল সমাধান আছে কিনা তা নিশ্চিত নই। এটি উত্তর হতে পারে বা নাও হতে পারে তবে কোনও মন্তব্যের জন্য এটি অনেক দীর্ঘ। আমি একই রকম কাজ করছিলাম এবং নিম্নলিখিত কৌশলগুলি সহায়তা করেছে:

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

সুতরাং এখন আমি ভাবছি যে আমার সমস্যাটি হ'ল আমার ফাংশনগুলি খুব গভীরভাবে বাসা বাঁধে।

আমি তাই মনে করি না. ছোট ফাংশনগুলিতে রিফ্যাক্টরিং সঠিক, তবে সম্ভবত আপনি তাদের আরও ভাল পুনরায় গোষ্ঠীভুক্ত করতে পারেন। কখনও কখনও, এটি সম্ভব হয় না, কখনও কখনও এটির জন্য সমস্যাটির দিকে কেবল দ্বিতীয় (বা তৃতীয়) চেহারা প্রয়োজন।

আপনার নকশাকে পার্থক্যের সাথে তুলনা করুন। পুনর্লিখন দ্বারা খারাপ কিছু আছে যে জিনিস আছে? যদি তা হয়, তবে আপনি আর আগের মতোই তাদের আরও ভাল করতে পারবেন না?


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

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

2

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

আপনি সম্ভবত সি # তে এর জাতীয় কোনও প্রতিরূপ তৈরি করতে পারেন, আপনি কীভাবে রাষ্ট্রকে চারপাশের মধ্য দিয়ে যাচ্ছেন তা নির্ভর করে। যদি আপনার মত কিছু আছে

public class MyState
{
    public int MyInt {get; set; }
    public string MyString {get; set; }
}

আপনি ইন্টারফেস IHasMyIntএবং IHasMyStringপদ্ধতি GetMyIntএবং GetMyStringযথাক্রমে সংজ্ঞায়িত করতে পারে । রাষ্ট্রীয় বর্গটি তখন এর মতো দেখায়:

public class MyState : IHasMyInt, IHasMyString
{
    public int MyInt {get; set; }
    public string MyString {get; set; }
    public double MyDouble {get; set; }

    public int GetMyInt () 
    {
        return MyInt;
    }

    public string GetMyString ()
    {
        return MyString;
    }

    public double GetMyDouble ()
    {
        return MyDouble;
    }
}

তারপরে আপনার পদ্ধতিগুলির জন্য IHasMyInt, IHasMyString, বা পুরো মাইস্টেটের যথাযথ প্রয়োজন হতে পারে।

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

public static T DoSomething<T>(T state) where T : IHasMyString, IHasMyInt
{
    var s = state.GetMyString();
    var i = state.GetMyInt();
    return state;
}

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

1
এটা কাজ করেছে. এখানে এটি কাজ করছে: dotnetfiddle.net/cfmDbs
দাইশা লিন

1

আমি মনে করি আপনি রেডাক্স বা এলম এবং তারা এই প্রশ্নটি কীভাবে পরিচালনা করেন সে সম্পর্কে ভালভাবে জানতে পারবেন।

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

এর পরে এই ফাংশনটি অন্যান্য খাঁটি ফাংশনগুলিকে কল করে, যার প্রতিটিই রাষ্ট্রের নির্দিষ্ট অংশকে পরিচালনা করে। ক্রিয়ার উপর নির্ভর করে, এই ফাংশনগুলির মধ্যে অনেকগুলি কিছুই না করে মূল অবস্থাটি অপরিবর্তিত অবস্থায় ফিরিয়ে দিতে পারে।

আরও জানতে, গুগল এলম আর্কিটেকচার বা Redux.js.org।


আমি এলমকে চিনি না, তবে আমি বিশ্বাস করি এটি রেডাক্সের মতো। রেডাক্স-এ, সমস্ত হ্রাসকারীরা প্রতিটি রাজ্যের পরিবর্তনের জন্য আহ্বান জানায় না? অত্যন্ত অদক্ষ মনে হচ্ছে।
দাইশা লিন

যখন এটি নিম্ন স্তরের অপ্টিমাইজেশনের কথা আসে তখন অনুমান করবেন না, পরিমাপ করুন। অনুশীলনে এটি যথেষ্ট দ্রুত পর্যাপ্ত।
ড্যানিয়েল টি।

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

-2

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

আপনার প্রশ্নের উত্তর: না, আমি অ্যাপ্লিকেশন যুক্তির মাধ্যমে কোনও নির্দিষ্ট রাজ্য বয়ন করি না তবে বর্তমান ব্যবহারের ক্ষেত্রে উপযুক্ত কি তা ব্যবহার করি এবং উপলভ্য টেকিকগুলি সবচেয়ে উপযুক্ত উপায়ে প্রয়োগ করি।

সি # আপনি (যেমনটি) চান তেমন কার্যকর হিসাবে ব্যবহার করতে প্রস্তুত (এখনও) নয়।


3
এই উত্তরটি নিয়ে শিহরিত নয়, না স্বরও। আমি কিছুতেই গালি দিচ্ছি না। এটিকে আরও কার্যকরী ভাষা হিসাবে ব্যবহার করার জন্য আমি সি # এর সীমাটি চাপ দিচ্ছি। এটি করা কোনও অস্বাভাবিক জিনিস নয়। আপনি দার্শনিকভাবে এটির বিরোধী বলে মনে করছেন, যা ভাল, তবে সেক্ষেত্রে এই প্রশ্নটির দিকে তাকাবেন না। আপনার মন্তব্য কারও কাজে আসেনি। চলো এগোই.
দাইশা লিন

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

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

@ দাইশালিন যদি আপনি নিজের প্রশ্নের সমালোচনা বা যোগাযোগের উত্তরগুলির সাথে মোকাবিলা করতে না পারেন তবে আপনি সম্ভবত এখানে প্রশ্ন জিজ্ঞাসা করবেন না বা পরের বার আপনি কেবল একটি দাবি অস্বীকার করে বলবেন যে আপনি কেবল আপনার ধারণাকে সমর্থন করার জন্য 100% জবাব দিতে আগ্রহী কারণ আপনি না সত্য শুনতে চান বরং সমর্থনকারী মতামত পেতে চান।
t3chb0t

দয়া করে একে অপরের সাথে কিছুটা সৌহার্দ্যপূর্ণ হন। ভাষাকে অসম্মান না করে সমালোচনা দেওয়া সম্ভব। ক্রিয়ামূলক শৈলীতে প্রোগ্রামিং সি # তে চেষ্টা করা অবশ্যই "অপব্যবহার" বা প্রান্তের কেস নয়। এটি অনেকগুলি সি # বিকাশকারী অন্যান্য ভাষা থেকে শিখতে ব্যবহার করার জন্য একটি সাধারণ কৌশল।
জুমালাইফগার্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.