আমি সাধারণ ব্যবহারের জন্য অটো অপছন্দ করার বিভিন্ন কারণ রয়েছে:
- আপনি কোডটি সংশোধন না করে রিফ্যাক্টর করতে পারেন। হ্যাঁ, অটো ব্যবহারের সুবিধা হিসাবে এটি প্রায়শই তালিকাভুক্ত। কেবল কোনও ফাংশনের রিটার্নের ধরণটি পরিবর্তন করুন, এবং কোডগুলি যেটিকে এটি অটো ব্যবহার করে বলে সমস্তগুলি যদি, কোনও অতিরিক্ত প্রচেষ্টা প্রয়োজন হয় না! আপনি সংকলনটি হিট করেছেন - এটি 0 টি সতর্কতা, 0 টি ত্রুটিগুলি তৈরি করে - এবং আপনি কেবলমাত্র এগিয়ে যান এবং ফাংশনটি যে 80 টি স্থানে ব্যবহৃত হয় সেগুলি 80 টির মধ্যে সম্ভাব্যতার সাথে সংশোধন করার ঝুঁকির সাথে মোকাবেলা না করেই আপনার কোডটি পরীক্ষা করে দেখুন।
তবে অপেক্ষা করুন, এটি কি আসলেই ভাল ধারণা? যদি সেই ধরণের ব্যবহারের ক্ষেত্রে অর্ধ ডজন ব্যবহার করা যায় এবং এখন সেই কোডটি অন্যভাবে আচরণ করে? এটি কেবল ইনপুট মানগুলিই সংশোধন করে নয়, তবে ফাংশনটিকে কল করে এমন অন্যান্য শ্রেণীর ব্যক্তিগত প্রয়োগের আচরণের দ্বারা স্পষ্টভাবে এনক্যাপসুলেশনটি ভেঙে ফেলতে পারে।
1A। আমি "স্ব-ডকুমেন্টিং কোড" ধারণার প্রতি বিশ্বাসী। স্ব-ডকুমেন্টিং কোডের পিছনে যুক্তি হ'ল মন্তব্যগুলি পুরানো হয়ে যায়, কোডটি কী করছে তা প্রতিফলিত করে না, কোডটি নিজেই - যদি একটি স্পষ্ট পদ্ধতিতে লিখিত হয় - স্ব-ব্যাখ্যামূলক হয়, সর্বদা আপ টু ডেট থাকে always এর অভিপ্রায় অনুসারে, এবং আপনাকে বাসি মন্তব্যে বিভ্রান্ত করতে দেব না। কোডগুলি নিজেই সংশোধন করার প্রয়োজন ছাড়াই যদি প্রকারগুলি পরিবর্তন করা যায় তবে কোড / ভেরিয়েবলগুলি নিজেরাই বাসি হয়ে উঠতে পারে। উদাহরণ স্বরূপ:
auto bThreadOK = চেকথ্রেডহেলথ ();
সমস্যাটি ব্যতীত চেকথ্রেডহেলথ () এক পর্যায়ে একটি বুলের পরিবর্তে ত্রুটির স্থিতি নির্দেশ করে এমন একটি এনাম মান ফেরত দেওয়ার জন্য পুনরুদ্ধার করা হয়েছিল। তবে যে ব্যক্তি এই পরিবর্তনটি করেছিল সে এই নির্দিষ্ট কোডের লাইনটি পরীক্ষা করতে মিস করেছে এবং সংকলকটি কোনও উপকারে আসেনি কারণ এটি সতর্কতা বা ত্রুটি ছাড়াই সংকলিত হয়েছে।
- প্রকৃত প্রকারগুলি কী তা আপনি কখনই জানেন না। এটি প্রায়শই অটোর প্রাথমিক "সুবিধা" হিসাবে তালিকাভুক্ত হয়। কোনও ফাংশন আপনাকে কী দিচ্ছে তা কেন শিখুন, যখন আপনি কেবল বলতে পারেন, "কে যত্নশীল? এটি সংকলন করে!"
এটি এমনকি ধরণের কাজ, সম্ভবত। আমি এক ধরণের কাজ বলি, কারণ আপনি প্রতিটি লুপ পুনরাবৃত্তির জন্য 500 বাইট স্ট্রাক্টের একটি অনুলিপি তৈরি করছেন, সুতরাং আপনি এতে কোনও একক মান পরিদর্শন করতে পারেন, কোডটি এখনও সম্পূর্ণ কার্যকর রয়েছে al এমনকি আপনার ইউনিট পরীক্ষাগুলিও বুঝতে সাহায্য করে না যে খারাপ কোডটি সেই সাধারণ এবং নির্দোষ দেখাচ্ছে অটোটির পিছনে লুকিয়ে রয়েছে। ফাইলটির মাধ্যমে স্ক্যান করা বেশিরভাগ লোকেরা এটি প্রথম নজরে দেখতে পাবে না।
এটিকে আরও খারাপ করা যেতে পারে তবে আপনি কী ধরণের তা জানেন না তবে আপনি একটি পরিবর্তনশীল নামটি চয়ন করেন যা এটি কী সম্পর্কে ভুল ধারণা তৈরি করে, ফলস্বরূপ 1a হিসাবে একই ফলাফল অর্জন করা, তবে একেবারে শুরু থেকে বরং পোস্ট refactor।
- প্রাথমিকভাবে লেখার সময় কোডটি টাইপ করা প্রোগ্রামিংয়ের সর্বাধিক সময় ব্যয়কারী অংশ নয়। হ্যাঁ, অটো প্রাথমিকভাবে কিছু কোড লেখা দ্রুত করে তোলে। অস্বীকৃতি হিসাবে, আমি> 100 ডাব্লুপিএম টাইপ করি, তাই এটি অন্যের মতো আমাকে বিরক্ত করে না। তবে আমাকে যদি কেবল সমস্ত দিনই নতুন কোড লিখতে হত তবে আমি একজন খুশি ক্যাম্পার হব be প্রোগ্রামিংয়ের বেশিরভাগ সময় ব্যয়কারী অংশটি হ'ল হার্ড-টু-প্রজনন, কোডে এজ-কেস বাগগুলি নির্ণয় করা হয় যা প্রায়শই সূক্ষ্ম অ-সুস্পষ্ট সমস্যার ফলস্বরূপ - যেমন অটো ব্যবহারের ধরণের অতিরিক্ত ব্যবহার প্রবর্তন হতে পারে (রেফারেন্স বনাম অনুলিপি, স্বাক্ষরিত বনাম স্বাক্ষরযুক্ত, ভাসমান বনাম ইন্ট, বুল বনাম পয়েন্টার ইত্যাদি)।
এটি আমার কাছে স্পষ্ট বলে মনে হয় যে অটো প্রাথমিকভাবে স্ট্যান্ডার্ড লাইব্রেরি টেম্পলেট ধরণের সহিত ভয়ানক বাক্য গঠনের জন্য একটি কার্যকারণ হিসাবে প্রবর্তিত হয়েছিল। লোকেদের সাথে ইতিমধ্যে পরিচিত টেম্পলেট সিনট্যাক্সটি ঠিক করার চেষ্টা করার পরিবর্তে - যা বিদ্যমান কোডটি ভেঙে দিতে পারে তার কারণে এটি করা প্রায় অসম্ভব হতে পারে - মূলত সমস্যাটি লুকিয়ে রাখে এমন একটি কীওয়ার্ড যুক্ত করুন। মূলত যাকে আপনি "হ্যাক" বলতে পারেন।
স্ট্যান্ডার্ড লাইব্রেরি পাত্রে অটো ব্যবহারের সাথে আমার আসলে কোনও দ্বিমত নেই। এটি স্পষ্টতই কী কীওয়ার্ডটির জন্য তৈরি হয়েছিল এবং স্ট্যান্ডার্ড লাইব্রেরির ক্রিয়াকলাপগুলি মৌলিকভাবে উদ্দেশ্য (বা সেই বিষয়ে টাইপ করুন) পরিবর্তন করতে পারে না, এটি স্বয়ংক্রিয়ভাবে ব্যবহারের জন্য নিরাপদ হয়ে যায়। তবে আপনার নিজের কোড এবং ইন্টারফেসগুলির সাথে এটি ব্যবহার করার বিষয়ে আমি খুব সতর্ক হতে চাই যা অনেক বেশি উদ্বায়ী হতে পারে এবং সম্ভাব্যভাবে আরও মৌলিক পরিবর্তনের বিষয় হতে পারে।
ভাষার সক্ষমতা বাড়ায় এমন অটো-এর আরেকটি দরকারী অ্যাপ্লিকেশন হ'ল টাইপ-অগ্নোস্টিক ম্যাক্রোগুলিতে অস্থায়ীতা তৈরি করছে। এটি এমন কিছু যা আপনি আগে করতে পারেন নি তবে আপনি এখনই এটি করতে পারেন।
auto
ইতিমধ্যে যখন পড়া খুব শক্ত হয়, অর্থাত্ ফাংশনগুলি খুব দীর্ঘ হয়, ভেরিয়েবলগুলি খুব ভালভাবে নামকরণ করা হয় না তখন প্রায়শই জিনিসগুলি পড়তে আরও শক্ত করে তোলে etc.