আপনার নির্দিষ্ট প্রশ্নের উত্তর দিতে: না, কোনও ভাষা শেখার দৃষ্টিকোণ থেকে, পুনরাবৃত্তি কোনও বৈশিষ্ট্য নয়। যদি আপনার অধ্যাপক সত্যই আপনাকে এমন কোনও "বৈশিষ্ট্য" ব্যবহারের জন্য চিহ্নিত করেন যা তিনি এখনও শেখাননি, এটি ভুল ছিল।
লাইনের মধ্যে পড়া, একটি সম্ভাবনা হ'ল পুনরাবৃত্তি ব্যবহার করে আপনি এমন কোনও বৈশিষ্ট্য ব্যবহার করা এড়িয়ে গেছেন যা তাঁর কোর্সের জন্য একটি শিক্ষার ফলাফল বলে মনে করা হয়েছিল। উদাহরণস্বরূপ, সম্ভবত আপনি পুনরাবৃত্তিটি মোটেও ব্যবহার করেননি, বা আপনি for
উভয় for
এবং এর পরিবর্তে কেবল লুপগুলি ব্যবহার করেছেন while
। এটি সাধারণ যে কোনও অ্যাসাইনমেন্টের উদ্দেশ্য নির্দিষ্ট কিছু কাজ করার আপনার দক্ষতা পরীক্ষা করা এবং আপনি যদি এগুলি করা এড়েন তবে আপনার প্রফেসর কেবল আপনাকে সেই বৈশিষ্ট্যটির জন্য আলাদা করে রাখা চিহ্নগুলি দিতে পারবেন না। যাইহোক, যদি এটি সত্যই আপনার হারানো চিহ্নগুলির কারণ হয়ে থাকে, তবে অধ্যাপককে এটিকে তার নিজস্ব শিক্ষার অভিজ্ঞতা হিসাবে গ্রহণ করতে হবে- যদি নির্দিষ্ট শিক্ষার ফলাফলগুলি প্রদর্শন করা কোনও কার্যনির্বাহার মানদণ্ডগুলির মধ্যে একটি হয়, তবে এটি শিক্ষার্থীদের স্পষ্টভাবে ব্যাখ্যা করা উচিত ।
এই বলে, আমি অন্যান্য বেশিরভাগ মন্তব্য এবং উত্তরগুলির সাথে একমত যে পুনরাবৃত্তি এখানে পুনরাবৃত্তির চেয়ে ভাল পছন্দ choice এর বেশ কয়েকটি কারণ রয়েছে এবং অন্য ব্যক্তিরা কিছুটা হলেও তাদের এগুলি ছুঁয়েছেন, তবে আমি নিশ্চিত নই যে তারা তাদের পিছনের চিন্তাকে পুরোপুরি ব্যাখ্যা করেছে।
স্ট্যাক ওভারফ্লোস
আরও সুস্পষ্ট একটি হ'ল আপনি স্ট্যাক ওভারফ্লো ত্রুটি হওয়ার ঝুঁকিপূর্ণ। বাস্তবে, আপনি যে পদ্ধতিটি লিখেছেন তা বাস্তবে একটির দিকে পরিচালিত হওয়ার খুব কম সম্ভাবনা, কারণ কোনও স্ট্যাকের ওভারফ্লো ট্রিগার করতে একজন ব্যবহারকারীকে বহুবার ভুল ইনপুট দিতে হবে।
যাইহোক, একটি জিনিস মনে রাখবেন তা হ'ল কেবল পদ্ধতিটিই নয়, কল চেইনে উচ্চ বা নিম্নতর অন্যান্য পদ্ধতি স্ট্যাকের মধ্যে থাকবে। এই কারণে, সহজভাবে উপলব্ধ স্ট্যাক স্পেস আপ গাব্বল করা যে কোনও পদ্ধতিতে করার জন্য একটি দুর্দান্ত জঘন্য জিনিস। অন্য কোডগুলি অযথা প্রচুর পরিমাণে এটি ব্যবহার করে থাকতে পারে এমন ঝুঁকির কারণে কেউ যখনই কোড লেখেন তখনই নিখরচায় স্ট্যাকের জায়গার বিষয়ে কেউ চিন্তা করতে চান না।
এটি অ্যাবস্ট্রাকশন বলে সফ্টওয়্যার ডিজাইনের আরও সাধারণ নীতিটির একটি অংশ। মূলত, আপনি যখন কল করবেন তখন আপনার DoThing()
যত্ন নেওয়া উচিত যে জিনিসটি সম্পন্ন হয়েছে। কীভাবে এটি সম্পন্ন হয়েছে তার বাস্তবায়ন বিশদ সম্পর্কে আপনাকে চিন্তা করার দরকার নেই । কিন্তু স্ট্যাকের লোভী ব্যবহার এই নীতিটি ভঙ্গ করে, কারণ প্রতিটি বিট কোড কল স্টেইনের অন্য কোথাও কোড দিয়ে নিরাপদে ধরে নিতে পারে যে এটি কত স্ট্যাক নিরাপদে ধরে নিতে পারে তা নিয়ে চিন্তা করতে হবে।
সুপাঠ্যতা
অন্য কারণটি পঠনযোগ্যতা। কোডটি যে আদর্শের আকাঙ্ক্ষিত হতে হবে তা হ'ল একটি মানব-পঠনযোগ্য নথি, যেখানে প্রতিটি লাইন এটি কী করছে তা কেবল বর্ণনা করে। এই দুটি পন্থা নিন:
private int getInput() {
int input;
do {
input = promptForInput();
} while (!inputIsValid(input))
return input;
}
বনাম
private int getInput() {
int input = promptForInput();
if(inputIsValid(input)) {
return input;
}
return getInput();
}
হ্যাঁ, এই উভয়ই কাজ করে, এবং হ্যাঁ তারা উভয়ই বোঝা সহজ। তবে দু'টি পদ্ধতির ইংরেজিতে কীভাবে বর্ণনা করা যেতে পারে? আমি মনে করি এটি এমন কিছু হবে:
ইনপুটটি বৈধ না হওয়া পর্যন্ত আমি ইনপুটটির জন্য অনুরোধ করব এবং তারপরে এটি ফিরিয়ে দেব
বনাম
আমি ইনপুটটির জন্য অনুরোধ করব, তবে যদি ইনপুটটি বৈধ হয় তবে আমি এটি ফিরিয়ে দেব, অন্যথায় আমি ইনপুটটি পেয়েছি এবং পরিবর্তে এর ফলাফলটি ফিরিয়ে দেব
সম্ভবত আপনি পরবর্তীকালের জন্য কিছুটা অল্প আঞ্চলিক শব্দটির কথা ভাবতে পারেন, তবে আমি মনে করি আপনি সর্বদা খুঁজে পাবেন যে আপনি প্রথমটি আসলে যা করার চেষ্টা করছেন তার ধারণাটি অনুসারে আরও সঠিক বিবরণ হতে চলেছে। এটি বলার অপেক্ষা রাখে না যে পুনরাবৃত্তি সর্বদা কম পঠনযোগ্য। গাছগুলির আবর্তনের মতো এটির মতো পরিস্থিতিগুলির জন্য, আপনি পুনরাবৃত্তি এবং অন্য পদ্ধতির মধ্যে পাশাপাশি বিশ্লেষণের পাশাপাশি একই ধরণের কাজটি করতে পারেন এবং আপনি অবশ্যই খুঁজে পেয়েছেন যে পুনরাবৃত্তি এমন কোড দেয় যা আরও স্পষ্টভাবে স্ব-বর্ণনামূলক, লাইন লাইন।
বিচ্ছিন্নতায় এই দুটিই ছোট পয়েন্ট। এটি খুব সম্ভবত অসম্ভব যে এটি সত্যই কোনও স্ট্যাকের ওভারফ্লোতে বাড়ে এবং পাঠযোগ্যতার লাভ সামান্য। তবে যে কোনও প্রোগ্রাম এই ছোট্ট অনেকগুলি সিদ্ধান্তের সংকলন হতে চলেছে, তাই এমনকি যদি বিচ্ছিন্ন হয়েও তারা বেশি গুরুত্ব দেয় না তবে সেগুলি সঠিক হওয়ার পিছনে নীতিগুলি শিখতে গুরুত্বপূর্ণ।