কম্পিউটার

কেন রিফ্যাক্টরিং কোডকে সহজ করে তোলে?

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

যদি আপনি কেন শিখতে পারেন এই কৌশলগুলি কাজ করে, আপনি আরও ভালভাবে বুঝতে সক্ষম হবেন যে আপনার কোডের সাহায্য কোথায় প্রয়োজন। এবং আপনি সঠিক সরঞ্জামগুলি ব্যবহার করতে সক্ষম হবেন যেখানে সেগুলি সবচেয়ে গুরুত্বপূর্ণ৷

সফ্টওয়্যার বিকাশে সবচেয়ে কঠিন সমস্যা কি?

"কম্পিউটার সায়েন্সে শুধুমাত্র দুটি কঠিন সমস্যা আছে:ক্যাশে অকার্যকর এবং নামকরণ জিনিস।"

– ফিল কার্লটন

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

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

অনুমানের মাধ্যমে সরলীকরণ

আপনার যদি ফটোগ্রাফিক মেমরি থাকে, এবং আপনার প্রোগ্রামের বিভিন্ন অংশ কীভাবে একত্রিত হয় তা মনে রাখতে পারেন, আপনার কাছে অনেক কম বাগ থাকবে, তাই না? স্মৃতি তৈরি করা কঠিন হতে পারে। কিন্তু আপনি একবারে একটি জিনিসের উপর ফোকাস করতে সক্ষম হওয়ার ফলে একই রকম অনেক সুবিধা পেতে পারেন।

সফ্টওয়্যার ডেভেলপমেন্টের অনেকগুলি সর্বোত্তম অনুশীলন হল আপনার মনের মধ্যে থাকা জিনিসগুলির সংখ্যা হ্রাস করা। কয়েকটি উদাহরণ:

  • আপনার রিটার্ন মানগুলির মধ্যে ধারাবাহিকতা মানে বিভিন্ন পরিস্থিতিতে বিভিন্ন ধরনের ডেটার পরিবর্তে আপনাকে শুধুমাত্র এক ধরনের ডেটার সাথে কীভাবে মোকাবিলা করতে হবে তা নিয়ে ভাবতে হবে।

  • বিমূর্ততা একটি সহজ ইন্টারফেসের পিছনে কোড লুকানোর একটি উপায়। ভাল বিমূর্তকরণের সাথে, আপনি ভাবতে পারেন কিভাবে বিমূর্ততা উচিত কাজ করুন, এবং এটি ভিতরে কীভাবে কাজ করে তা নিয়ে আপনাকে চিন্তা করতে হবে না।

  • পরীক্ষা আপনি অন্য এলাকায় কাজ করার সময় ভুলভাবে একটি এলাকায় কোড ভাঙা থেকে আপনাকে রক্ষা করতে পারে। আপনি অনুমান করতে পারেন যে আপনি দুর্ঘটনাক্রমে ভেঙে ফেলবেন তা ধরা পড়বে। এর মানে হল আপনি যে কোডটিতে কাজ করছেন সেটির উপর ফোকাস করতে পারেন এবং পরে আপনি যেকোন কিছু ভেঙে ফেলতে পারেন।

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

আপনি যখন সঠিক উপায়ে এই কৌশলগুলি ব্যবহার করেন, আপনি কিছু ভাল অনুমান করতে পারেন। এই অনুমানগুলির সাথে, আপনাকে আপনার মনের সামনের কাছাকাছি কোথাও রাখতে হবে না। আপনি আরও ভাল, আরও নির্ভরযোগ্য কোড লিখতে পারেন, কারণ আপনার কোডটি সিস্টেমে হতে পারে এমন প্রায় অসীম পরিণতি সম্পর্কে আপনাকে চিন্তা করতে হবে না৷

অন্যদিকে, ভুল জায়গায় এই কৌশলগুলি ব্যবহার করা লুকাবে কোড যা আপনাকে আসলে দেখতে হবে। কোডটি লুকিয়ে রেখে, আপনি যে অনুমানগুলি তৈরি করেন তা কখনও কখনও ভুল হবে। এটি এটিকে আরও আরও করে সম্ভবত আপনি এটি ভেঙে ফেলবেন!

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

ডান রিফ্যাক্টরিং, সঠিক জায়গা

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


  1. কেন আমার ইমেল সারিবদ্ধ বলে?

  2. সফ্টওয়্যার আপডেটগুলি কেন এত গুরুত্বপূর্ণ

  3. অ্যান্টিভাইরাস সফ্টওয়্যার কি করে?

  4. 5 সেরা ক্রাউড সিমুলেশন সফ্টওয়্যার ক্রাউড অ্যানিমেশন করার জন্য