উচ্চতর ক্রমের জন্য নামকরণ কনভেনশন? [বন্ধ]


15

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

জাভাস্ক্রিপ্টের একটি উদাহরণ:

function onlyDivisibleBy(div) { // <-- higher order function
  return function (n) {
    return n % div === 0;
  }
}

var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];

arr.filter(onlyDivisibleBy(3)); // [0, 3, 6, 9]
arr.filter(onlyDivisibleBy(5)); // [0, 5]

আমি এটি উপরের মতো লেখার প্রবণতা রেখেছি: অর্থাত্ বিন্যাস বিন্যাসে সুস্পষ্টতার জন্য অনুকূলকরণ (আমি উপরের শেষ পংক্তাগুলি "আইটেমগুলি কেবল 5 দ্বারা বিভাজ্য পেতে" ফিল্টার করব) পড়লাম) তবে সংজ্ঞা বিন্দু থেকে দূরে এটি যে প্রসঙ্গে ব্যবহৃত হয়েছে তা থেকে, এই ফাংশনটির নাম থেকে এটি কী বোঝে তা বোঝা এত সহজ নয়।


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

6
@ রাশিট ফাংশনগুলি যা ফাংশনগুলি ফেরত দেয় সেগুলিও উচ্চতর অর্ডার। তারা উভয় করতে পারে।
itbruce

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

উত্তর:


14

না, আমি মনে করি না যে আপনি কোনও ফাংশন ফিরিয়ে দিচ্ছেন তা বোঝাতে আপনার একটি বিশেষ নামকরণের কনভেনশন দরকার। আমরা যেমন ভাষা থেকে দেখতে পারি যেখানে ফাংশনগুলি তীক্ষ্ণ হয় , একটি ফাংশন ফিরিয়ে দেওয়া মূলত একাধিক যুক্তিযুক্ত ফাংশন হিসাবে একই। যেমন onlyDivisibleBy(3)(6)এবং এর মধ্যে সামান্য পার্থক্য রয়েছেonlyDivisibleBy(3,6)

আমি থেকে নাম পরিবর্তন হবে onlyDivisibleByথেকে isDivisibleByযদিও হিসাবে আমি মনে করি isআরো একটি সাধারণ উপায় একটি বিধেয় ইঙ্গিত নেই এবং onlyDivisibleBy(3)(6)মনে হয় বিজোড় নিয়ে আসতে হবে trueদেওয়া 6 পরিষ্কারভাবে এছাড়াও 2 দিয়ে বিভাজ্য


5

দৃ strongly়ভাবে টাইপযুক্ত কার্যকরী ভাষায়, ফাংশনের স্বাক্ষর থেকে স্পষ্ট হয় যে উচ্চ-অর্ডার ফাংশনটি কী এবং কী নয়, তাই কেবল প্রয়োজন নেই।

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


4

না, এবং আপনার কোনও ব্যবহার করা উচিত নয়।

কেন?

কারণ এটি এক ধরণের হাঙ্গেরিয়ান স্বরলিপি হবে । ধারণাটি হ'ল উচ্চতর অর্ডার ফাংশনে পাস করা কার্যগুলি কেবল এক ধরণের ভেরিয়েবল। সুতরাং তাদের সাথে এমন আচরণ করুন।


1
জড়িত হ'ল যে হাঙ্গেরিয়ান স্বরলিপিটি কোনও মূল্যে এড়ানো উচিত? আমি
রেক

4
আমি এটি আগেও পড়েছি এবং আমি এখনও বিশ্বাস করি যে
হানি হাদীসটি

@ টিহশ্রাইক আপনার লিঙ্কটি নষ্ট হয়েছে।
করভাস_192

1
@ করভাস_192 অবশ্যই জোয়েলের ব্লগ পুনর্নির্মাণে হারিয়ে গেছে! নতুন ইউআরএল joelonsoftware.com/2005/05/11/making-wrong-code-look-wrong
তেহশ্রাইক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.