কম্পিউটার টিউটোরিয়াল

এজ কেস কীভাবে আপনার আদর্শ সমাধানের লুকানো দুর্বলতা উজাগর করে

আপনি আপনার ক্রেজি টেস্টিং সমস্যার পーフেক্ট সমাধান পেয়ে গেলেন। শুধু DEFAULT_HOST কনস্ট্যান্ট ওভাররাইড করলেই হয়ে যাবে।

সिवায় ওয়ার্নিং বন্ধ করতে হবে সেই কুৎসিত মেসেজ হটাতে। কিন্তু এখন আপনার সব টেস্ট পাস করছে, এবং আপনাকে শুধু কয়েক লাইন কোড পরিবর্তন করতে হয়েছে! আপনি খুব কাছে আছেন, প্রায় চখতে পাচ্ছেন!

সिवায় সেই একটা টেস্ট যেখানে আপনি চান না হোস্ট ওভাররাইড করতে। কিন্তু আপনি কনস্ট্যান্ট রি-ওভাররাইড করতে পারেন, ওয়ার্নিং আবার বন্ধ করতে পারেন, এবং টেস্ট শেষে রিসেট করতে পারেন। আপনি খুব কাছে আছেন, প্রায় চখতে পাচ্ছেন!

সिवায়... সিবায়... সিবায়...

একই পদ্ধতিতে עוד কিছু দিন পর, যখন আপনি সাতাশের বার আটকে যাবেন এবং আপনার অ্যাপ্লিকেশন একটা বিশাল হ্যাকের বলে পরিণত হবে, আপনি পিছনে হটে চিন্তা করবেন: আমি কেন এই সব করছি? সমাধান কি সমস্যাটির চেয়ে খারাপ নয়?

অতিচতুর সমস্যা সমাধান কীভাবে করবেন

স্পষ্ট হলো আপনার মূল আইডিয়া আপনার পুরো সমস্যা সমাধান করবে না। তো একটি ভালো আইডিয়া কীভাবে চিন্তা করবেন, যা আপনার মূল আইডিয়া হ্যান্ডল করতে পারেননি এমন সব এজ কেস হ্যান্ডল করবে?

আপনি পারবেন না। আপনি অতিরিক্ত চতুরতাকে আরও চতুরতা দিয়ে লড়াই দিতে পারবেন না। কমপক্ষে, সরাসরি নয়। বদলে, অন্য দিক থেকে যান। সহজ হোন। সরল হোন।

এটার মানে কী?

আপনি যা অ্যাবস্ট্রাক্ট করতে চেয়েছিলেন সেটা ইনলাইন করুন। নিজেকে রিপিট করুন। কোডটি এক্সপ্লিসিট রাখুন।

যদি আপনি DEFAULT_HOST কনস্ট্যান্ট ওভাররাইড করে ভিন্ন ডিফল্ট হোস্ট সেট করতে চেয়েছিলেন, তবে ডিফল্ট কনসেপ্টটি ভুলে যান। শুধু প্রতিবার স্পেসিফাই করুন।

তাই, এর বদলে:

test/integration/welcome_test.rb
require 'test_helper' silence_warnings do Rack::Test::DEFAULT_HOST = "www.justinweiss.com" end class WelcomeTest < ActionDispatch::IntegrationTest include Rack::Test::Methods test "can visit the homepage" do get "/" # ... end # ... end

এমন কিছু করুন:

test/integration/welcome_test.rb
require 'test_helper' class WelcomeTest < ActionDispatch::IntegrationTest test "can visit the homepage" do get "https://www.justinweiss.com/" # ... end # ... end

যখনই আমার দাঁড়াত মানসিক সমাধানগুলো ভাঙে, তার কারণ হলো আমি সেই এজ কেসগুলো কল্পনা করিনি যেগুলো পরবর্তীতে হ্যান্ডল করতে হতো।

এটা ঠিক আছে। আমরা ভবিষ্যৎ প্রিডিক্ট করতে পারি না। কিন্তু যখন আপনি সেটা ঘটতে দেখছেন, কোডাইнг বন্ধ করুন। প্যাচ পর প্যাচ লাগানোর বদলে, আপনার মূল সমাধান আনইন্ড করুন এবং একটি ভালো সমাধান বের করুন।

ভালো সমাধান বের করার উপায়

যখন আপনার সকল কোড এক্সপ্লিসিট, স্ট্রেটফরওয়ার্ডভাবে লেখা থাকে, তখন আপনি সেগুলো রি-অর্গানাইজ করার উপায় চিন্তা করবেন।

সাধারণত, এক্সট্রাক্ট মেথড বা এক্সট্রাক্ট ক্লাস সঠিক জায়গায় প্রয়োগ করলেই হয়। ট্রিক হলো সেটা সঠিক জায়গা বের করা। কিন্তু সেটা বের করা অনেক সহজ হয়ে যায় যখন আপনি আপনার সামনে প্রচুর রিপিটেশন দেখেন।

এবং ইনহেরিটেন্স এবং ডেলিগেশন ব্যবহার করুন। সেগুলো সিম্পল বিল্ডিং ব্লক যা আপনার কোড ক্লিন করতে সাহায্য করবে চতুরতা ছাড়া।

আর একটা কথা

ডকুমেন্টেশন পড়তে ভুলবেন না:

test/integration/welcome_test.rb
require 'test_helper' class WelcomeTest < ActionDispatch::IntegrationTest setup do # এটি ইতিমধ্যে আছে: host! "www.justinweiss.com" end test "can visit the homepage" do get "/" # ... end # ... end

জবাব সবসময় এত সুস্পষ্ট হবে না। তবে কিছুই ওইতنی হামবলিং নয় যখন আপনি বুঝেন যে আপনার সমাধান করা সঠিক সমস্যার জন্য তিনটি ক্লাস এবং একটি জেম লিখেছেন, কিন্তু বিল্ট-ইন এক মেথড সমাধান ছিল।

শেষে একটি ভালো সমাধান

আপনার দ্বিতীয় সমাধান সাধারণত আপনার মূল সমাধানের চেয়ে সব ক্ষেত্রে ভালো হয়।

কেন?

  • আপনার ডেভেলপার হিসেবে অভিজ্ঞতা বেশি।

    তাই আপনি ভালো কোড কী সেটা ভালো বুঝতে পারেন।

  • আপনি আপনার বানানো সিস্টেম সম্পর্কে বেশি জানেন।

    তাই আপনি ভালো ডিসিশন নিতে পারেন আপনার লেখা কোড কীভাবে সেটাতে ফিট করবে।

  • আপনি জানেন আপনার যেসব ধারণা ভুল ছিল

    তাই আপনার সমাধানগুলো কল্পিত সমস্যাগুলোর নয়, বাস্তব সমস্যাগুলোর সাথে আরও ভালো মেলে।

এবং শেষে, আপনার চতুরতার সেরা অংশের জন্য জায়গা থাকতে পারে। এইবার, হ্যাক ছাড়া।

আপনাকে খনন বন্ধ করতে হবে

চতুর কোড লেখা মজার। রুবিতে, এটা লিখতেও সহজ। এবং বিশেষ করে সহজ হয় একই পথে চলতে থাকা, এমনকি জানা থাকলে যে সেটা ভুল জায়গায় নিয়ে যাচ্ছে।

তবে একবার আপনাকে লাগে কিছু ঠিক নয়, এক মিনিট rukুন। আপনার কোড আন-ফ্যাক্টর করুন। ডকুমেন্টেশন পড়ুন। আপনার কোড স্ট্রেটফরওয়ার্ড এবং এক্সপ্লিসিট করুন। এবং একটি ভালো পথ খুঁজে বের করুন।

আপনি কি মনে করতে পারেন শেষ কবে আপনি একটা ক물이 না শেষ হয় এমন গর্ত খনন করতেন? আপনি কীভাবে বের হয়েছিলেন? এবং আপনার ফাইনাল কোড কেমন দেখত?

  1. রেইলস পারফরম্যান্সে দক্ষতা: অ্যাপ্স ডায়াগনোজ ও ত্বরান্বিত করার প্রামাণিক পদ্ধতি

  2. Office 365-এ MyAnalytics দিয়ে রিমোট ওয়ার্ক এফিশিয়েন্সি ম্যাক্সিমাইজ করুন

  3. ওয়াইজ ভিডিও কনভার্টার: বিনা কষ্টের ভিডিও ফরম্যাট রূপান্তরের সর্বোত্তম টুল

  4. এজ কম্পিউটিং ডিপ্লয়মেন্ট: সর্বোত্তম ফলাফলের জন্য কখন অ্যাডপ্ট করবেন