এই প্রশ্নের জবাবদিহি করতে, ধরে নেওয়া যাক যে কোনও প্রোগ্রামারের মনে অস্পষ্টতার জন্য ব্যয় আরও কয়েকটি ব্যয়বহুল কিছু ব্যয়বহুল।
এটি দেওয়া, কেন আমি আমার সতীর্থদের তাদের ফাংশনগুলির পরামিতিগুলি বর্ননা না করে পালিয়ে যেতে দেব ? কোডের থেকে আরও জটিল অংশটি কী হতে পারে তার উদাহরণ হিসাবে নীচের কোডটি ধরুন:
let foo x y = x + y
এখন, সরঞ্জামদণ্ডের একটি দ্রুত পরীক্ষা আপনাকে দেখাবে যে এফ # আপনাকে নির্ধারণ করেছে যে আপনি x এবং y এর জন্য অন্তর্নিহিত হবেন। যদি আপনি যা ইচ্ছা করেন, তবে সব ঠিক আছে। তবে আমি জানি না এটি আপনার উদ্দেশ্য কী ছিল। আপনি যদি এই কোডটি দুটি স্ট্রিং একসাথে সংযুক্ত করার জন্য তৈরি করে থাকেন? বা যদি আমি মনে করি আপনি সম্ভবত ডাবলস যুক্ত করতে চান? বা যদি আমি কেবল প্রতিটি একক ফাংশন প্যারামিটারের ধরণটি নির্ধারণ করতে চাই না তবে কি হবে?
এখন এটি উদাহরণ হিসাবে নিন:
let foo x y = "result: " + x + y
এফ # এখন ধরে নিয়েছে আপনি সম্ভবত স্ট্রিংগুলি একত্রিত করার উদ্দেশ্যে করেছেন, তাই x এবং y স্ট্রিং হিসাবে সংজ্ঞায়িত হয়েছে। যাইহোক, আপনার কোডটি রক্ষণাবেক্ষণকারী দরিদ্র লোকেরা হিসাবে আমি এই দিকে তাকিয়ে ভাবতে পারি যে সম্ভবত আপনি যদি x এবং y (ints) একসাথে যুক্ত করার সিদ্ধান্ত নিয়েছিলেন এবং তারপরে ফলাফলটি ইউআই উদ্দেশ্যে যুক্ত করতে চান।
অবশ্যই এই জাতীয় সরল উদাহরণগুলির জন্য কেউ এটিকে ছেড়ে দিতে পারে, তবে কেন স্পষ্টত ধরণের টীকা নীতি প্রয়োগ করে না?
let foo (x:string) (y:string) = "result: " + x + y
দ্ব্যর্থহীন হওয়ার কী ক্ষতি? অবশ্যই, কোনও প্রোগ্রামার তারা যা করার চেষ্টা করছে তার জন্য ভুল ধরণেরগুলি বেছে নিতে পারে, তবে কমপক্ষে আমি জানি তারা এটি উদ্দেশ্য করে নিয়েছিল, এটি কেবল একটি তদারকি ছিল না।
এটি একটি গুরুতর প্রশ্ন ... আমি এখনও এফ # তে খুব নতুন এবং আমার সংস্থার জন্য ট্রেইল জ্বলছি। আমি যে স্ট্যান্ডার্ডগুলি গ্রহণ করি তা হ'ল ভবিষ্যতের সমস্ত # # কোডিংয়ের ভিত্তি, অন্তহীন অনুলিপি-পেস্টিংয়ের মধ্যে এম্বেড করা যে আমি নিশ্চিত যে আগাম কয়েক বছর ধরে সংস্কৃতিটি বয়ে বেড়াবে।
সুতরাং ... এফ # এর ধরণের অনুমান সম্পর্কে বিশেষ কিছু রয়েছে যা কেবল প্রয়োজন হলে টীকাগুলি ধরে রাখা এটি একটি মূল্যবান বৈশিষ্ট্য করে তোলে? অথবা বিশেষজ্ঞ এফ #- এর লোকেরা নন-তুচ্ছ অ্যাপ্লিকেশনগুলির জন্য তাদের পরামিতিগুলি বর্ননা করার অভ্যাস তৈরি করে?