রিফ্যাক্টরিং
বাংলায় refactoring শেখো — Extract Method, Move Method, Replace Conditional সহ safe step-by-step code improvement।
61টা পাঠ · একটার পর একটা পড়ো, বা সরাসরি যেটা দরকার সেটায় যাও।
Extract Method: একটা বিশাল ফাংশনকে ছোট ছোট নামওয়ালা helper-এ ভাগ করো
Extract Method ধাপে ধাপে শিখে নাও।
Inline Method: যে Shortcut আসলে Shortcut ছিলই না
Inline Method শেখো ধাপে ধাপে।
Extract Variable: ছোট ছোট নামওয়ালা ধাপে বড় হিসাব সমাধান করো
Extract Variable শেখো ধাপে ধাপে। একটা বিশাল, জটিল expression কে ছোট ছোট নামওয়ালা অংশে ভাগ করো — ঠিক যেভাবে গণিতের খাতায় কাজ দেখাও।
Inline Temp: একবারই ব্যবহার করা রাফ নোটটা ছুঁড়ে ফেলো
Inline Temp রিফ্যাক্টরিং শেখো একটা মজার রাফ পেপারের গল্প দিয়ে — TypeScript আর C# উদাহরণ, নিরাপদ ধাপ, IDE shortcut, আর কখন variable inline করা উচিত না সেট…
Replace Temp with Query: তাজা জিজ্ঞেস করো, বাসি চিরকুটে ভরসা করো না
ক্যান্টিনের সিঙ্গারার গল্প দিয়ে Replace Temp with Query বোঝো — TypeScript আর C# উদাহরণ, নিরাপদ ধাপ, আর একটাই সত্যের উৎস।
Split Temporary Variable: একটা বালতি দুই কাজ করতে পারে না
দুই বালতির গল্প দিয়ে Split Temporary Variable শেখো — TypeScript ও C# উদাহরণ আর নিরাপদ ধাপ সহ। প্রতিটা variable-কে একটাই কাজ আর একটাই সৎ নাম দাও।
Remove Assignments to Parameters: ধার করা খাতায় কখনো লিখবে না
Remove Assignments to Parameters refactoring শিখো একটা ধার করা খাতার গল্পের মাধ্যমে — TypeScript আর C# উদাহরণ সহ, সহজ ধাপে ধাপে।
Replace Method with Method Object: বড় রান্নার জন্য আলাদা স্টেশন বানাও
Replace Method with Method Object শেখো বিয়ের রান্নাঘরের গল্প দিয়ে — TypeScript ও C# উদাহরণ আর নিরাপদ ধাপ-ধাপ পদ্ধতি দিয়ে, একদম শুরু থেকে।
Substitute Algorithm: স্কুলে যাওয়ার নতুন সোজা রাস্তা
Substitute Algorithm রিফ্যাক্টরিং শেখো সাইকেলের রুটের গল্প দিয়ে — TypeScript আর Python উদাহরণ সহ, আর টেস্ট-ফার্স্ট নিরাপত্তার নিয়ম যেটা সব শিক্ষার্থীর জ…
Move Method: কাজটা সেই class-এ নিয়ে যাও যেখানে সে আসলে থাকে
একটা স্কুলের গল্পের মাধ্যমে Move Method রিফ্যাক্টরিং শেখো।
Move Field: ডেটা রাখো যেখানে সে কাজে লাগে
Move Field শেখো একটা মজাদার স্কুলের গল্প দিয়ে। ডেটাকে সেই class-এ সরাও যেটা আসলে ওই ডেটা ব্যবহার করে, যাতে state আর behaviour একসাথে বাস করতে পারে।
Extract Class: অতিরিক্ত কাজে ডুবে যাওয়া class-কে একটু সাহায্য করো
Extract Class refactoring শেখো একটা মজার school office-এর গল্পের মাধ্যমে। একটা overloaded class-কে দুটো focused class-এ ভাগ করো — প্রতিটার একটাই কাজ।
Inline Class: যে Class কিছুই করে না, তাকে মিলিয়ে দাও
Inline Class refactoring শেখো একটা school committee-র গল্পের মাধ্যমে। যে class কিছুই করে না তাকে তার user-এর সাথে মিলিয়ে দাও আর অকারণ layer মুছে ফেলো।
Hide Delegate: মনিটরকে জিজ্ঞেস করো, মনিটর নিজেই দৌড়াবে
Hide Delegate রিফ্যাক্টরিং শেখো একটা মজার গল্পের মাধ্যমে। employee।
Remove Middle Man: পিয়ন শুধু ফরওয়ার্ড করলে, সরাসরি হেড স্যারের কাছে যাও
Remove Middle Man রিফ্যাক্টরিং শেখো একটা স্কুলের পিয়নের গল্প দিয়ে — যে প্রতিটা প্রশ্ন হেডমাস্টারের কাছে ফরওয়ার্ড করে, নিজে কিছু যোগ না করেই।
Introduce Foreign Method: নিজের ব্যাগে রাখা স্ট্যাপলার
স্কুলের ফটোকপি মেশিনে স্ট্যাপলার নেই — এই গল্প দিয়ে Introduce Foreign Method শেখো।
Introduce Local Extension: ভাড়ার দোকানের পাশে নিজের কেবিন বানাও
Introduce Local Extension রিফ্যাক্টরিং শেখো একটা গল্পের মাধ্যমে — যেখানে ভাড়া করা দোকানের পাশে নিজের কেবিন বানানো হয় যেটা পরিবর্তন করা যায় না।
Self Encapsulate Field: একজন দারোয়ান তোমার ডেটা পাহারা দিক
Self Encapsulate Field সহজভাবে বোঝানো — একটা class কেন তার নিজের field পড়া ও লেখার জন্য getter এবং setter ব্যবহার করে, নিরাপদ ধাপ, TypeScript ও C# উদাহরণ…
Replace Data Value with Object: তোমার Data-কে একটা নিজের ঘর দাও
Replace Data Value with Object সহজভাবে বোঝানো — কীভাবে একটা plain string বা number-কে validation আর behaviour সহ একটা ছোট class-এ রূপান্তর করতে হয়।
Change Value to Reference: বিশটা ফটোকপি না, একটাই অফিস ফাইল
Change Value to Reference সহজ ভাষায় — একই entity-র ডুপ্লিকেট কপি কেন পুরনো হয়ে যায়, আর registry বা repository দিয়ে একটাই shared instance কীভাবে data c…
Change Reference to Value: যেকোনো ১০ টাকার নোটই সমান
Change Reference to Value সহজভাবে বোঝানো হয়েছে — একটা shared, mutable reference object-কে কীভাবে content-based equality সহ একটা ছোট immutable value objec…
Replace Array with Object: প্রতিটি জায়গাকে একটা নাম দাও
Replace Array with Object সহজ ভাষায় — কেন row[0], row[1], row[2]-এর মতো গোপন position-ওয়ালা array bug তৈরি করে, আর কীভাবে named field সহ একটা class কোডক…
Encapsulate Field: Object যেন নিজের ডেটা নিজে পাহারা দেয়
Encapsulate Field কী সেটা সহজ ভাষায় — কেন public field যেকোনো কোডকে object-এর ডেটা নষ্ট করতে দেয়, আর কীভাবে private field সাথে getter-setter দিয়ে objec…
Encapsulate Collection: লাইভ লিস্ট বাইরে দেওয়া বন্ধ করো
Encapsulate Collection সহজ ভাষায় — কেন live array বা list return করলে যেকেউ তোমার object নষ্ট করে দিতে পারে, আর কীভাবে read-only view আর add/remove metho…
Replace Type Code with Class: ম্যাজিক নম্বরকে একটা আসল পরিচয় দাও
Replace Type Code with Class রিফ্যাক্টরিং শেখো একটা স্কুলের গল্প দিয়ে — TypeScript আর C#-এ before/after দেখো, আর কখন Class, Subclasses বা State/Strategy…
Replace Type Code with Subclasses: যখন প্রতিটা ধরন সত্যিই আলাদা আচরণ করে
Replace Type Code with Subclasses refactoring শেখো ডে-স্কলার/বোর্ডার/হোস্টেলার গল্পের মাধ্যমে।
Replace Type Code with State/Strategy: যখন Type নিজেই বদলে যায়
Replace Type Code with State/Strategy refactoring শেখো prepaid থেকে postpaid SIM-এর গল্পের মাধ্যমে — TypeScript আর C#-এ swappable plan object, আর কখন Clas…
Decompose Conditional: জটিল if-কে সহজ নামে ভেঙে ফেলো
Decompose Conditional refactoring শেখো স্কুলের নোটিশের গল্প দিয়ে — সহজ TypeScript ও C# উদাহরণ, নিরাপদ ধাপ, আর IDE shortcut সহ।
Consolidate Conditional Expression: অনেক ছোট চেক, একটাই পরিষ্কার প্রশ্ন
স্কুল গেটের গল্প দিয়ে Consolidate Conditional Expression শেখো — TypeScript আর C# উদাহরণ, নিরাপদ ধাপ, আর side-effect-এর ফাঁদ যেটা না জানলেই নয়।
Consolidate Duplicate Conditional Fragments: মিষ্টির কাউন্টারটা বাইরে নিয়ে যাও
ক্যান্টিনের গল্প দিয়ে Consolidate Duplicate Conditional Fragments refactoring শেখো — TypeScript আর C# example, safety rules, আর সহজ step-by-step practice।
Remove Control Flag: পেয়ে গেলেই থেমে যাও
Remove Control Flag refactoring শেখো একজন দারোয়ানের গল্পের মাধ্যমে।
Guard Clause দিয়ে Nested Conditional সরাও: Arrow সমান করো
Guard clause কী, কীভাবে nested if-else-এর arrow shape ভেঙে code সমান করা যায় — মসজিদের গেটের গল্পের মাধ্যমে TypeScript আর C#-এ step-by-step শেখো।
Replace Conditional with Polymorphism: প্রতিটি ধরনকে তার নিজের ডেস্ক দাও
Replace Conditional with Polymorphism রিফ্যাক্টরিং শেখো স্কুল রিসেপশনের গল্প দিয়ে — বারবার আসা type switch কীভাবে subclass-এ পরিণত হয়, TypeScript ও C#-এ।
Introduce Null Object: 'কিছু নেই' কে একটা ভদ্র প্রতিনিধি দাও
Introduce Null Object refactoring শেখো একটা school guardian card-এর গল্পের মাধ্যমে — Tony Hoare-এর billion-dollar mistake, ছড়িয়ে-ছিটিয়ে থাকা null check।
Introduce Assertion: পরিবেশনের আগে ডাল চেখে দেখো
Introduce Assertion রিফ্যাক্টরিং শেখো একটা সতর্ক রাঁধুনির গল্প দিয়ে — লুকানো assumption গুলো executable check-এ বদলানো, C#-এ Debug।
Rename Method: দোকানের সাইনবোর্ড যেন সত্যি কথা বলে
Rename Method সহজভাবে বোঝানো — কেন method-এর নাম সত্যিটা বলতে হবে, কীভাবে নিরাপদে নাম বদলাতে হয় delegate পদ্ধতিতে, আর কীভাবে VS Code (F2) ও JetBrains (Sh…
Add Parameter: অর্ডার স্লিপে একটা নতুন কলাম
Add Parameter সহজ ভাষায় — কীভাবে method-কে নতুন একটা তথ্য দিতে হয় যেটা সে এখন চাইছে, কেন explicit parameter গ্লোবাল state লুকিয়ে রাখার চেয়ে ভালো, over…
Remove Parameter: স্কুলের ফর্ম থেকে 'টেলিগ্রাম ঠিকানা' ঘরটা বাদ দাও
Remove Parameter সহজ ভাষায় — method আর যে parameter ব্যবহার করে না সেটা নিরাপদে কীভাবে মুছবে, মরা parameter গুলো পাঠককে কীভাবে বিভ্রান্ত করে আর প্রতিটা c…
Separate Query from Modifier: জিজ্ঞেস করলেই বিল বাড়ে না তো?
Separate Query from Modifier সহজ ভাষায় — যে method একসাথে question করে আর state বদলায়, সেটাকে ভেঙে দুটো করো: একটা pure query আর একটা আলাদা command।
Parameterize Method: একটাই জুসের রেসিপি, শুধু সাইজটা দিয়ে দাও
জুসের দোকানের গল্পের মাধ্যমে Parameterize Method রিফ্যাক্টরিং শেখো — TypeScript আর C# উদাহরণ সহ, নিরাপদ ধাপে ধাপে mechanics, আর সেই সিস্যার নিয়ম যেটা Rep…
Replace Parameter with Explicit Methods: গোপন কোড নয়, নামের বোর্ড লাগাও
Replace Parameter with Explicit Methods refactoring শেখো একটা ব্যাংক কাউন্টারের গল্পের মাধ্যমে — TypeScript আর Python উদাহরণ, safe mechanics, আর seesaw ru…
Preserve Whole Object: পুরো ID Card দেখাও
Preserve Whole Object refactoring শেখো একটা school ID card-এর গল্প দিয়ে — TypeScript আর C# example সহ, safe step-by-step mechanics, আর object pass করলে c…
Replace Parameter with Method Call: দোকানদারকে তার নিজের দাম পড়ে শোনাতে যেও না
Replace Parameter with Method Call refactoring শেখো চায়ের দোকানের একটা মজার গল্পের মাধ্যমে — TypeScript আর C# উদাহরণসহ, নিরাপদ ধাপে ধাপে পদ্ধতি, আর testa…
Introduce Parameter Object: পাঁচটা আলাদা উত্তর না দিয়ে একটা ঠিকানা কার্ড দাও
Introduce Parameter Object সহজ ভাষায় — একই parameter গ্রুপ বারবার বিভিন্ন method-এ ঘুরে বেড়ানো আসলে একটা লুকানো concept-এর চিহ্ন।
Remove Setting Method: কিছু জিনিস কলমে লেখা, পেন্সিলে না
Remove Setting Method সহজ ভাষায় — কেন এমন একটা field যেটা তৈরির পরে কখনো বদলানো উচিত না তার setter রাখা ঠিক না, আর কীভাবে read-only field, init-only prop…
Hide Method: গোপন মশলা রান্নাঘরেই থাকে
Hide Method সহজ ভাষায় — যে method শুধু class নিজেই ব্যবহার করে সেটা public মেনুতে রাখা উচিত না কেন, আর visibility কমিয়ে private বা internal করলে API ছোট।
Replace Constructor with Factory Method: নামে অর্ডার করো, রান্নাঘর ঠিক করুক
Replace Constructor with Factory Method রিফ্যাক্টরিং শেখো একটা ক্যান্টিনের গল্পের মাধ্যমে — before/after TypeScript ও C# কোড, নিরাপদ step-by-step migratio…
Replace Error Code with Exception: ব্যর্থতাকে চুপিচুপি নয়, সরাসরি জানাও
Replace Error Code with Exception রিফ্যাক্টরিং শেখো একটা সরকারি অফিসের গল্পের মাধ্যমে — before/after TypeScript আর C# উদাহরণ, নিরাপদ migration ধাপ, আর Res…
Replace Exception with Test: ভেতরে ঢোকার আগে বোর্ড দেখো
Replace Exception with Test (Replace Exception with Precheck) refactoring শেখো — চায়ের দোকানের গল্প দিয়ে, before/after TypeScript আর C# code দিয়ে, TryP…
Pull Up Field: সবার জন্য একটাই নোটিশ বোর্ড
Pull Up Field refactoring শিখো একটা স্কুলের নোটিশ বোর্ডের গল্প দিয়ে — যে field প্রতিটা subclass-এ বারবার কপি হয়েছে সেটাকে superclass-এ তুলে দাও, TypeScr…
Pull Up Method: পুরো স্কুলের জন্য একটাই নির্দেশিকা
Pull Up Method refactoring শেখো স্কুলের ছুটির আবেদনের গল্পের মাধ্যমে — subclass-এ duplicate হয়ে যাওয়া method-গুলো superclass-এ তুলে আনো, TypeScript আর C…
Pull Up Constructor Body: একটাই সকালের রুটিন, তারপর নিজের কাজ
Pull Up Constructor Body refactoring শেখো school-এর সকালের রুটিনের গল্প দিয়ে — সব subclass constructor-এর শুরুতে যে duplicate initialization আছে, সেটা su…
Push Down Field: সুইমিং পুলের সময়সূচি শুধু ৭সি-র বোর্ডেই লাগানো উচিত
Push Down Field refactoring শেখো একটা স্কুলের নোটিশ বোর্ডের গল্পের মাধ্যমে — superclass-এ থাকা কোনো field যদি শুধু কিছু subclass ব্যবহার করে, সেটাকে ঠিক স…
Push Down Method: যে Method শুধু একটা Subclass ব্যবহার করে, সেটা সেখানে নামিয়ে দাও
Push Down Method শিখো একটা স্কুলের office গল্পের মাধ্যমে — superclass-এর সৎ contract, TypeScript আর C#-এ নিরাপদ ধাপে ধাপে move, আর কীভাবে এটা Refused Bequ…
Extract Subclass: বিশেষ কেসটাকে তার নিজের class দাও
Extract Subclass শেখো একটা দর্জির দোকানের জরুরি অর্ডারের গল্পের মধ্যে দিয়ে — TypeScript আর C#-এ flag সরানোর পদ্ধতি, নিরাপদ ধাপে ধাপে কাজ, আর কখন subclass…
Extract Superclass: দুটো যমজ class-এর জন্য একটাই সাধারণ নিয়মের বই
Extract Superclass refactoring শেখো সায়েন্স ল্যাব আর কম্পিউটার ল্যাবের গল্পের মাধ্যমে — TypeScript ও C#-এ pull-up move, superclass বনাম interface তুলনা ট…
Extract Interface: একটাই ফর্ম, কিন্তু হাজার রকমের কর্মী
Extract Interface রিফ্যাক্টরিং শেখো — রহিম ইলেকট্রিশিয়ান আর করিম প্লাম্বারের গেটের রেজিস্টারের গল্প দিয়ে।
Collapse Hierarchy: যখন Parent আর Child Class একই হয়ে যায়
একটা মহল্লার কমিটির গল্পের মাধ্যমে Collapse Hierarchy refactoring শেখো — TypeScript আর C#-এ superclass আর subclass মার্জ করার ধাপে ধাপে পদ্ধতি, আর কখন বুঝ…
Form Template Method: একটা রেসিপি কার্ড, অনেক রকম বিরিয়ানি
দুই চাচির বিরিয়ানির গল্প দিয়ে Form Template Method রিফ্যাক্টরিং শেখো — TypeScript আর Python-এ shared algorithm skeleton বের করার ধাপে ধাপে পদ্ধতি, আর কী…
Replace Inheritance with Delegation: কাউন্টার ভাড়া নাও, দোকান উত্তরাধিকারে নিও না
Replace Inheritance with Delegation রিফ্যাক্টরিং শেখো একটা মিষ্টির দোকানের গল্প দিয়ে — composition over inheritance-এর আসল মানে, fragile base class সমস্য…
Replace Delegation with Inheritance: যখন সাহায্যকারীই হয়ে যায় শিক্ষানবিশ
Replace Delegation with Inheritance রিফ্যাক্টরিং শেখো একটা দর্জির দোকানের গল্পের মাধ্যমে — Middle Man smell কী, is-a শর্ত কীভাবে চেক করতে হয়, আর TypeScri…