অ-এফপি লোকেরা কি অল্প পরিমাণে কার্যনির্বাহী প্রোগ্রামিং বোধগম্য? [বন্ধ]


43

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

সুতরাং, একজন বিকাশকারী যিনি ফাংশনাল প্রোগ্রামিং (হাস্কেল) শিখেছেন, আমি সমাধান করার ঝোঁক রাখি, উদাহরণস্বরূপ, ফিল্টারিং এটি:

filtered = filter(lambda item: included(item.time, dur), measures)

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

প্রশ্ন : আজকের মতো কোড লিখতে কি ঠিক আছে?

  • এফপি রচনা / শিখেনি এমন কোনও বিকাশকারী কীভাবে কোডটিতে প্রতিক্রিয়া দেখায়?
  • এটা কি পাঠযোগ্য?
  • সংশোধনযোগ্য?
  • লাইনটি কী করে বাচ্চাকে বোঝানোর মতো ডকুমেন্টেশনগুলি লিখতে হবে?

     # Filter out the items from measures for which included(item.time, dur) != True

আমি আমার বসকে জিজ্ঞাসা করেছি, এবং তিনি কেবল বলেছেন "এফপি হ'ল কালো যাদু, তবে যদি এটি কাজ করে এবং সবচেয়ে কার্যকর সমাধান হয়, তবে এটি ব্যবহার করা ঠিক হবে" "

এ সম্পর্কে আপনার মতামত কী? নন-এফপি প্রোগ্রামার হিসাবে আপনি কোডটিতে কীভাবে প্রতিক্রিয়া জানান? কোডটি "গুগাবল" তাই আপনি এটি বুঝতে পারছেন যে এটি কী করে? আমি এই সম্পর্কে প্রতিক্রিয়া পছন্দ করবে।


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

আমি আপনাকে একটি অপ্রকাশিত উত্তর দিতে পারি না, কারণ আমি এফপি পছন্দ করি। মন্তব্যটি যুক্ত করা ভাল ধারণা হবে, যদি এটি সহজতর নাও হয়।
ব্রুনো শ্যাপার

3
আপনার মন্তব্য পরিষ্কার হতে পারে; ফিল্টারটিতে এমন উপাদান রয়েছে যার জন্য পরীক্ষাটি সত্য, সুতরাং আপনার মন্তব্যটি পড়তে পারে: # Select the item's from measures for which included(item.time, dur) == Trueডাবল নেতিবাচক এড়ানো সবসময় বোঝার উন্নতি করে।
মার্টিজন পিটারস

6
আপনি কি পরিবর্তে তালিকার বোধগম্যতা বিবেচনা করেছেন? এগুলি প্রায়শই মানচিত্র / ফিল্টারের চেয়ে বেশি "পাইথোনিক" হিসাবে বিবেচিত হয়।
ফ্যান্ট 0 মি

2
@ মাতাজজমহিক ভাল, এটি সুন্দর ...;)
কেডি 35a

উত্তর:


50

এটা কি পাঠযোগ্য?

আমার জন্য: হ্যাঁ, তবে আমি বুঝতে পেরেছি যে পাইথন সম্প্রদায় প্রায়শই তালিকা বোধগম্যাকে map()/ / ব্যবহারের চেয়ে ক্লিনারের সমাধান হিসাবে বিবেচনা করে filter()

আসলে, জিভিআর এমনকি এই ফাংশনগুলি পুরোপুরি বাদ দেওয়ার বিষয়টি বিবেচনা করেছিল

এই বিবেচনা:

filtered = [item for item in measures if included(item.time, dur)]

আরও, এর সুবিধা রয়েছে যে একটি তালিকা বোধগম্যতা সর্বদা একটি তালিকা ফিরিয়ে দেবে। map()এবং filter()অন্যদিকে পাইথন 3 এ একটি পুনরাবৃত্তি প্রদান করবে।

নোট: আপনি যদি এর পরিবর্তে কোনো ইটারেটরে আছে চান, এটা প্রতিস্থাপন হিসাবে সহজ হিসাবে []সঙ্গে ():

filtered = (item for item in measures if included(item.time, dur))

সত্যি কথা বলতে, আমি পাইথন ব্যবহার করার map()বা ব্যবহার করার কোনও কারণ দেখি না filter()

এটা কি পরিবর্তনযোগ্য?

হ্যাঁ, অবশ্যই, এটি সহজ করার জন্য একটি জিনিস রয়েছে: এটি একটি ফাংশন করুন, ল্যাম্বডা নয়।

def is_included(item):
    return included(item.time, dur)
filtered = filter(is_included, measures)
filtered = [item for item in measures if is_included(item)]

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

এফপি রচনা / শিখেনি এমন কোনও বিকাশকারী কীভাবে কোডটিতে প্রতিক্রিয়া দেখায়?

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

map()এবং filter()হয় অত্যন্ত সহজ। আপনি তাদেরকে মনদেখ বুঝতে বলছেন এমন নয় like সে কারণেই আমি মনে করি না যে আপনাকে এ জাতীয় মন্তব্য লেখার দরকার আছে। ভাল ভেরিয়েবল এবং ফাংশন নাম ব্যবহার করুন, তারপরে কোডটি প্রায় স্ব-বর্ণনামূলক। কোনও ভাষা বিকাশকারী জানেন না এমন কোন বৈশিষ্ট্যটি আপনি অনুমান করতে পারবেন না। আপনারা সকলেই জানেন, পরবর্তী বিকাশকারী হয়তো অভিধান কী তা জানেন না।

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


5
এটা তোলে মূল্য এছাড়াও উল্লেখ হতে পারে জেনারেটরের এক্সপ্রেশন , যা, তালিকা comprehensions কিন্তু তালিকার পরিবর্তে আগমন জেনারেটর হিসাবে একই কাজ হিসাবে mapএবং filterপাইথন 3. না
জেমস

@ জেমস: দুর্দান্ত ধারণা, আমি এগুলি আমার পোস্টে যুক্ত করেছি। ধন্যবাদ!
ফ্যান্ট 0 মি

2
আমি সাধারণত আপনার পক্ষে সর্বদা একটি তালিকা বোধগম্য যুক্তিটি ব্যবহার করতে পারিreduce তার একটি পাল্টা উদাহরণ হিসাবে উপস্থিত করি, কারণ কোনও ইনলাইন জেনারেটর বা তালিকা বোঝার সাথে প্রতিস্থাপন করা তুলনামূলকভাবে কঠিন । reduce
কোজিরো

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

4
"তিনি পাইথন ডকুমেন্টেশনের জন্য গুগল করেন এবং পাঁচ মিনিট পরে এটি কীভাবে কাজ করে তা জানেন। অন্যথায়, তিনি পাইথনে প্রোগ্রামিং করা উচিত নয়।"
বার্জার ফ্রেইন্ড-হানসেন 21:51

25

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

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

রিফ্যাক্টরিংয়ের আগে কোড:

var categorizedProducts = new Dictionary<string, List<Product>>();

// Get only enabled products, filtering the disabled ones, and group them by categories.
foreach (var product in this.Data.Products)
{
    if (product.IsEnabled)
    {
        if (!categorizedProducts.ContainsKey(product.Category))
        {
            // The category is missing. Create one.
            categorizedProducts.Add(product.Category, new List<Product>());
        }

        categorizedProducts[product.Category].Add(product);
    }
}

// Walk through the categories.
foreach (var productsInCategory in categorizedProducts)
{
    var minimumPrice = double.MaxValue;
    var maximumPrice = double.MinValue;

    // Walk through the products in a category to search for the maximum and minimum prices.
    foreach (var product in productsInCategory.Value)
    {
        if (product.Price < minimumPrice)
        {
            minimumPrice = product.Price;
        }

        if (product.Price > maximumPrice)
        {
            maximumPrice = product.Price;
        }
    }

    yield return new PricesPerCategory(category: productsInCategory.Key, minimum: minimumPrice, maximum: maximumPrice);
}

এফপি ব্যবহার করে রিফ্যাক্টরিংয়ের পরে একই কোড:

return this.Data.Products
    .Where(product => product.IsEnabled)
    .GroupBy(product => product.Category)
    .Select(productsInCategory => new PricesPerCategory(
              category: productsInCategory.Key, 
              minimum:  productsInCategory.Value.Min(product => product.Price), 
              maximum:  productsInCategory.Value.Max(product => product.Price))
    );

এটি আমাকে এটি ভাবতে বাধ্য করে:

  • আপনি যদি চিনেন না যে পরবর্তী বিকাশকারী যিনি আপনার কোড বজায় রাখবেন তার যথেষ্ট সামগ্রিক অভিজ্ঞতা এবং কার্যকরী প্রোগ্রামিংয়ের কিছু জ্ঞান থাকবে তবে:

  • অন্যথায়, হয় কার্যকরী প্রোগ্রামিং এড়ান, বা একই সময়ে বাক্য গঠন, একটি অ-কার্যকরী প্রোগ্রামিং বনাম আপনার পদ্ধতির সুবিধাগুলি এবং সম্ভাব্য সতর্কতাগুলি ব্যাখ্যা করে একটি ভারবস মন্তব্য দিন।


8
+1 যদি এফপি আপনার কোডটি কারও কাছে আরও পঠিত না করে , আপনি এটি ভুল করছেন।
গিরিগিরিস আন্দ্রেসেক 21'12 এ 11

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

7
যে বিষয়টি আমাকে সবচেয়ে বিরক্ত করে তা হ'ল আমরা বিশ্বাস করি যে এটি বিকাশকারীদের কার্যকরী শৈলী না শিখার পক্ষে এটি গ্রহণযোগ্য believe সুবিধাগুলি বহুবার প্রমাণিত হয়েছে, দৃষ্টান্তটি মূলধারার ভাষা দ্বারা সমর্থিত supported যদি লোকেরা কার্যকরী কৌশলগুলি বোঝার সামর্থ্যের অভাব হয় তবে তাদের ব্যবহার করার ইচ্ছা না থাকলেও তাদের শেখানো উচিত বা তাদের নিজেরাই শেখানো উচিত। আমি জ্বলন্ত আবেগের সাথে এক্সএসএলটিকে ঘৃণা করি, তবে এটি পেশাদার হিসাবে আমি এটি শিখতে বাধা দেয় না।
স্প্রেগ

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

2
@ স্প্রেগ: আমি আপনার বক্তব্য পেয়েছি এবং এটির সাথে একমত এটি কেবলমাত্র আমরা আশা করতে পারি যে উদাহরণস্বরূপ সি # প্রোগ্রামাররা এফপি থেকে প্যারাডিম ব্যবহার করতে শুরু করে, যখন program প্রোগ্রামারদের মধ্যে অনেকেই জেনেরিক ব্যবহার করেন না। যতক্ষণ না অনেক অদক্ষ দক্ষ প্রোগ্রামার রয়েছে, ততক্ষণ আমাদের পেশার বারটি কম থাকবে, বিশেষত যেহেতু প্রযুক্তিগত পটভূমি ব্যতীত বেশিরভাগ ব্যক্তিরা বিকাশ কী তা বুঝতে পারেন না।
আর্সেনি মরজেনকো

20

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

কোনও মন্তব্য ছিল না, এবং আমি মনে করি যে এর কোনও প্রয়োজন ছিল না। এমনকি আমি আমার সহকর্মীকে তার কোডটি বুঝতে সহায়তা করতে বলিনি।

আমি প্রায় 1.5 বছর ধরে কাজ করে যাচ্ছি তা আমলে নিয়ে আমি মনে করি যেহেতু আমি করেছি তাই বেশিরভাগ প্রোগ্রামাররা এ জাতীয় কোড বুঝতে এবং পরিবর্তন করতে সক্ষম হবে।

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


1
আপনার মন্তব্যের জন্য ধন্যবাদ! এটি আমাকে অন্যান্য দৃষ্টিকোণে আরও তথ্য দিয়েছে। ঘরে অন্ধ হয়ে যাওয়া সহজ, এবং তারপরে আপনি এফপি না জানলে কেমন লাগছিল তা আপনি জানেন না :)
kd35a

1
@ কেডি 35 এ, আপনাকে স্বাগতম। ভাগ্যক্রমে, আমি এখানে উদ্দেশ্য হতে পারি))
সুপারম

1
+1 দেখানোর জন্য যে অনেক ভাষায় এখন এফপির উপাদান রয়েছে।
জোশুয়া ড্রাক

লিনিকিউ সি # তে এফপির প্রাথমিক উদাহরণ
কনরাড মোরাউস্কি

3

আমি অবশ্যই হ্যাঁ বলব!

ফাংশনাল প্রোগ্রামিংয়ের অনেকগুলি দিক রয়েছে এবং আপনার উদাহরণ হিসাবে উচ্চতর-ক্রম ফাংশনগুলি ব্যবহার করা কেবল তার মধ্যে একটি।

উদাহরণস্বরূপ, আমি কোনও ভাষায় লিখিত যে কোনও সফ্টওয়্যার (যেখানে "খাঁটি" বলতে আমার কোনও পার্শ্ব-প্রতিক্রিয়া নেই) জন্য খাঁটি ফাংশনগুলি রচনাগুলি অত্যন্ত গুরুত্বপূর্ণ বলে মনে করি, কারণ:

  • তারা ইউনিট পরীক্ষা সহজ
  • এগুলি পার্শ্ব-কার্যকারী ফাংশনগুলির চেয়ে অনেক বেশি কমপোজ্য
  • তারা ডিবাগ করা সহজ

আমি প্রায়শই পরিবর্তিত মান এবং ভেরিয়েবলগুলি এড়িয়ে চলি - এফপি থেকে নেওয়া আরও একটি ধারণা।

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


2

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

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

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

টিএল; ডিআর: অ্যাপ্লিকেশনগুলির উচ্চ স্তরের কেন্দ্রীয় অংশে এড়িয়ে চলুন (যা অ্যাপ্লিকেশনটির কার্যকারিতাটির ওভারভিউয়ের জন্য পড়তে হবে)। অন্যথায় এটি ব্যবহার করুন।


এটি উচ্চ স্তরের কোড ব্যবহার করা এড়াতে ভাল পয়েন্ট!
কেডি 35 এ

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

2

সি ++ সম্প্রদায়টি সম্প্রতি ল্যাম্বডা পেয়েছে এবং আমি বিশ্বাস করি তাদের প্রায় একই প্রশ্ন রয়েছে। উত্তর এক হতে পারে, যদিও। সি ++ সমতুল্য হবে:

std::copy_if(measures.begin(), measures.end(), inserter(filter),
  [dur](Item i) { return included(i, dur) } );

এখন std::copyনতুন নয়, এবং _ifরূপগুলিও নতুন নয়, তবে ল্যাম্বডা। তবুও এটি প্রসঙ্গে সুস্পষ্টভাবে সংজ্ঞায়িত করা হয়েছে: durধরা পড়েছে এবং তাই ধ্রুবক হয়, Item iলুপে পরিবর্তিত হয় এবং একক returnবিবৃতি সমস্ত কাজ করে।

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


মজার বিষয়, এটি কোন ভাষায় আছে তার উপর নির্ভর করে বিভিন্ন উত্তর থাকতে পারে PH পিএইচপি-কোডারদের কীভাবে পাইথন কোডারদের চেয়ে এই জাতীয় জিনিসগুলির সাথে আরও সমস্যা ছিল তা সম্পর্কে @ ক্রিসটফার ক্যাক পোস্টের সাথে সম্ভবত সম্পর্কিত ।
কেডি 35 এ

0

কোনও সহকর্মীর কাছে একটি কোড স্নিপেট পোস্ট করুন যা অজগরের মতো সাবলীল নয়, এবং তাকে জিজ্ঞাসা করে কিনা সে কোডটি পরীক্ষা করে 5 মিনিট সময় ব্যয় করতে পারে কিনা তা জিজ্ঞাসা করুন।

যদি হ্যাঁ, আপনি সম্ভবত ভাল। যদি তা না হয় তবে আপনার এটি আরও পরিষ্কার করা উচিত।

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

সম্ভবত আপনার কোডটি আরও সহজ, ইডিয়ট-প্রুফ পদ্ধতির চেয়ে আরও দক্ষ / ভাল দেখাচ্ছে / মার্জিত? তারপরে আপনার নিজেকে জিজ্ঞাসা করা দরকার: আমার কি এটি করা দরকার? আবার উত্তর যদি না হয় তবে তা করবেন না!

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


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