বিরোধী নিদর্শন পরিচিতি
অ্যান্টি-প্যাটার্ন হল প্যাটার্নের ঠিক বিপরীত। মনে রাখবেন যে ডিজাইন প্যাটার্নগুলি ভাল প্রোগ্রামিং অনুশীলনের উদাহরণ, অর্থাৎ, নির্দিষ্ট সমস্যাগুলি সমাধানের জন্য নিদর্শন। তবে অ্যান্টি-প্যাটার্নগুলি তাদের সম্পূর্ণ বিপরীত, অর্থাৎ, বিভিন্ন সমস্যা সমাধান করার সময় ভুলের ধরণগুলি তৈরি হয়।
ভাল প্রোগ্রামিং অনুশীলনের অংশ হল অবিকল অ্যান্টি-প্যাটার্ন এড়ানো। ভাববেন না যে এটি এমন একটি বোধগম্য তাত্ত্বিক আবর্জনা - এগুলি নির্দিষ্ট সমস্যা যা প্রায় প্রতিটি বিকাশকারী সম্মুখীন হয়েছে। কে জানে, সে সশস্ত্র!
আসুন কিছু অ্যান্টি-প্যাটার্ন দেখি যা নতুনদের মধ্যে সাধারণ:
- ম্যাজিক সংখ্যা এবং স্ট্রিং
- ঈশ্বর শ্রেণী
- অকাল অপ্টিমাইজেশান
- সাইকেল আবিষ্কার
- ইউনিসাইকেল আবিষ্কার
ম্যাজিক সংখ্যা এবং স্ট্রিং
একটি ম্যাজিক নম্বর হল একটি ধ্রুবক যা কিছুর জন্য কোডে ব্যবহৃত হয় (প্রায়শই ডেটা শনাক্তকরণ), যার সংখ্যাটি সংশ্লিষ্ট মন্তব্য ছাড়া কোন অর্থে হয় না। সংখ্যা একেবারে কোন শব্দার্থক বহন করে.
যখন আপনার প্রকল্পের কোডে সংখ্যাগুলি উপস্থিত হতে শুরু করে, যার অর্থ স্পষ্ট নয়, এটি খুব খারাপ। একজন প্রোগ্রামার যিনি এই ধরনের কোডের লেখক নন তাদের এটি কীভাবে কাজ করে তা ব্যাখ্যা করতে অসুবিধা হবে। সময়ের সাথে সাথে, এমনকি জাদু নম্বর সহ কোডটির লেখকও এটি ব্যাখ্যা করতে সক্ষম হবেন না।
সংখ্যাগুলি কোড বোঝা এবং রিফ্যাক্টরকে কঠিন করে তোলে। এই ত্রুটির প্রধান কারণ উন্নয়নে তাড়াহুড়ো এবং প্রোগ্রামিং অনুশীলনের অভাব। বিকাশ শুরু করার আগে সাংখ্যিক ধ্রুবকের ব্যবহার নির্ধারণ করে এই অ্যান্টি-প্যাটার্নটি কুঁড়িতে ছিঁড়ে ফেলা উচিত।
এই সমস্যাটি সমাধান করার জন্য, আপনাকে একটি ভেরিয়েবল তৈরি করতে হবে যার নামটি সাংখ্যিক ধ্রুবকের উদ্দেশ্য ব্যাখ্যা করে এবং এটি পছন্দসই মান নির্ধারণ করে।
ঈশ্বর শ্রেণী
ঐশ্বরিক বস্তু হল একটি বিরোধী প্যাটার্ন যা OOP বিকাশকারীদের মধ্যে বেশ সাধারণ। এই ধরনের একটি বস্তু অনেকগুলি ফাংশন গ্রহণ করে এবং / অথবা প্রায় সমস্ত ডেটা সঞ্চয় করে। ফলস্বরূপ, আমাদের কাছে একটি অ-পোর্টেবল কোড রয়েছে, যা, তদ্ব্যতীত, বোঝা কঠিন।
উপরন্তু, এই ধরনের কোড বজায় রাখা বেশ কঠিন, প্রদত্ত যে পুরো সিস্টেমটি প্রায় একচেটিয়াভাবে এটির উপর নির্ভর করে। এই ত্রুটির কারণগুলি: বিকাশকারীর অক্ষমতা, একজন বিকাশকারী কাজের একটি বড় অংশ গ্রহণ করে (বিশেষত যখন কাজের পরিমাণ সেই বিকাশকারীর অভিজ্ঞতার স্তরকে ছাড়িয়ে যায়)।
বিভিন্ন ডেভেলপার মোকাবেলা করতে পারে এমন সাবটাস্কগুলিতে কাজগুলিকে ভেঙে এই পদ্ধতির সাথে মোকাবিলা করা প্রয়োজন।
অকাল অপ্টিমাইজেশান
অকাল অপ্টিমাইজেশান হল অপ্টিমাইজেশান যা প্রোগ্রামারের কাছে কোথায় এবং কিভাবে করতে হবে সে সম্পর্কে অবগত সিদ্ধান্ত নেওয়ার জন্য প্রয়োজনীয় সমস্ত তথ্য থাকার আগে সঞ্চালিত হয়।
অনুশীলনে, কোথায় একটি বাধা ঘটবে তা ভবিষ্যদ্বাণী করা কঠিন। অভিজ্ঞতামূলক ফলাফল পাওয়ার আগে অপ্টিমাইজ করার প্রচেষ্টা কোড জটিলতা এবং ত্রুটির উপস্থিতির দিকে নিয়ে যাবে, কিন্তু কোন সুবিধা বয়ে আনবে না।
কিভাবে এড়াতে? প্রথমে, সুপরিচিত এবং প্রমাণিত অ্যালগরিদম এবং সরঞ্জামগুলি ব্যবহার করে পরিষ্কার, পাঠযোগ্য, কার্যকরী কোড লিখুন। প্রয়োজনে, বাধাগুলি খুঁজে পেতে প্রোফাইলিং সরঞ্জামগুলি ব্যবহার করুন। পরিমাপের উপর নির্ভর করুন, অনুমান এবং অনুমান নয়।
উদাহরণ এবং বৈশিষ্ট্য
প্রোফাইলিং আগে ক্যাশিং. গাণিতিকভাবে সঠিক অ্যালগরিদমের পরিবর্তে জটিল এবং অপ্রমাণিত হিউরিস্টিক ব্যবহার করা। নতুন, অ-পরীক্ষিত ফ্রেমওয়ার্কের একটি নির্বাচন যা লোডের অধীনে খারাপ আচরণ করতে পারে।
অসুবিধা কিসের
কখন অপ্টিমাইজেশন অকাল হয় তা নির্ধারণ করা সহজ নয়। অগ্রিম বৃদ্ধির জন্য জায়গা ছেড়ে দেওয়া গুরুত্বপূর্ণ। আপনাকে সমাধান এবং প্ল্যাটফর্মগুলি বেছে নিতে হবে যা আপনাকে সহজেই অপ্টিমাইজ করতে এবং বৃদ্ধি করতে দেয়৷ এছাড়াও কখনও কখনও অকাল অপ্টিমাইজেশন খারাপ কোডের জন্য একটি অজুহাত হিসাবে ব্যবহৃত হয়। উদাহরণস্বরূপ, তারা একটি O(n2) অ্যালগরিদম নেয় কারণ অ্যালগরিদমটি O(n) আরও কঠিন হবে।
সাইকেল আবিষ্কার
এই অ্যান্টি-প্যাটার্নের অর্থ হ'ল প্রোগ্রামার একটি সমস্যার নিজস্ব সমাধান তৈরি করে যার সমাধান ইতিমধ্যেই বিদ্যমান এবং প্রায়শই অনেক বেশি সফল।
বিকাশকারী নিজেকে স্মার্ট বলে মনে করেন, তাই তিনি তার পূর্বসূরিদের অভিজ্ঞতা থাকা সত্ত্বেও প্রতিটি কাজের জন্য তার নিজস্ব সমাধান নিয়ে আসার চেষ্টা করেন। প্রায়শই, এটি শুধুমাত্র সময়ের ক্ষতি এবং প্রোগ্রামারের দক্ষতা হ্রাসের দিকে পরিচালিত করে। সব পরে, সমাধান suboptimal হতে পারে, যদি সব পাওয়া যায়.
অবশ্যই, আপনি একটি স্বাধীন সমাধানের সম্ভাবনা সম্পূর্ণভাবে বাতিল করতে পারবেন না, কারণ এটি সরাসরিভাবে কপি-পেস্ট প্রোগ্রামিংকে নেতৃত্ব দেবে। বিকাশকারীকে অবশ্যই তার সামনে উপস্থিত হতে পারে এমন কাজগুলি নেভিগেট করতে হবে যাতে সেগুলি দক্ষতার সাথে সমাধান করা যায়, তৈরি সমাধানগুলি ব্যবহার করে বা নিজের উদ্ভাবন করা যায়।
খুব প্রায়ই, এই বিরোধী প্যাটার্নের কারণ হল সময়ের একটি সাধারণ অভাব। এবং সময় অর্থ।
স্কয়ার হুইল সাইকেল আবিষ্কার
এই অ্যান্টি-প্যাটার্নটি খুব ঘনিষ্ঠভাবে শুধুমাত্র চাকাটি পুনরায় উদ্ভাবনের সাথে সম্পর্কিত - যখন একটি ভাল সমাধান বিদ্যমান থাকে তখন আপনার নিজের খারাপ সমাধান তৈরি করুন।
এই অ্যান্টি-প্যাটার্নটি দ্বিগুণ সময় নেয়: প্রথমত, আপনার নিজের সমাধান উদ্ভাবন এবং বাস্তবায়নের জন্য সময় ব্যয় হয় এবং তারপরে এটি রিফ্যাক্টরিং বা প্রতিস্থাপনের জন্য।
প্রোগ্রামারকে অবশ্যই নির্দিষ্ট পরিসরের কাজের জন্য বিভিন্ন সমাধানের অস্তিত্ব সম্পর্কে সচেতন হতে হবে , তাদের সুবিধা এবং অসুবিধাগুলি দ্বারা পরিচালিত হতে হবে।
একজন প্রোগ্রামার হিসাবে আপনি যে সমস্ত সমস্যার মুখোমুখি হবেন তাকে দুটি ভাগে ভাগ করা যেতে পারে:
- স্মার্ট লোকেরা 30 বছর আগে এই সমস্যার সমাধান করেছিল
- স্মার্ট লোকেরা 50 বছর আগে এই সমস্যার সমাধান করেছিল
আপনার জন্মের আগেই বেশিরভাগ প্রোগ্রামিং সমস্যা সফলভাবে সমাধান করা হয়েছে । কিছু উদ্ভাবনের দরকার নেই - শুধু অন্য লোকেদের অভিজ্ঞতা অধ্যয়ন করুন (এর জন্য বই লেখা হয়)।
2022 সালে, আমরা নিম্নলিখিত জন্মদিনগুলি উদযাপন করতে পারি:
- প্রোগ্রামিং ভাষা
- সি ভাষা 50 বছর (1972)
- জাভা ভাষা 27 বছর বয়সী (1995)
- পাইথন 31 বছর বয়সী (1991)
- সংযোগ
- ইন্টারনেট 39 বছর বয়সী (1983)
- মোবাইল ফোনের বয়স 49 (1973)
- প্রথম এসএমএস পাঠানো হয়েছিল 30 বছর আগে (1992)
- নিদর্শন
- MVC প্যাটার্ন 44 পরিণত হয়েছে (1978)
- এসকিউএল উদ্ভাবিত হয়েছিল 48 বছর আগে (1974)
- জাভা বিন উদ্ভাবিত হয়েছিল 26 বছর আগে (1996)
- লাইব্রেরি
- হাইবারনেট উদ্ভাবিত হয়েছিল 21 বছর আগে (2001)
- বসন্ত উদ্ভাবিত হয়েছিল 20 বছর আগে (2002)
- টমক্যাট মুক্তি পেয়েছে 23 বছর আগে (1999)
- ওএস
- ইউনিক্স 51 বছর আগে মুক্তি পেয়েছিল (1971)
- উইন্ডোজ দিনের আলো দেখেছিল 37 বছর আগে (1985)
- ম্যাক ওএস 21 বছর আগে প্রকাশিত হয়েছিল (2001)
এবং এই সমস্ত জিনিসগুলি কেবল উদ্ভাবিত হয়নি, সেগুলি সেই সময়ে খুব সাধারণ এবং প্রাসঙ্গিক সমস্যাগুলির সমাধান হিসাবে তৈরি করা হয়েছিল।
GO TO FULL VERSION