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

কোড যা অদ্ভুত লাগে সেটা সনাক্ত ও ফিক্স করে সফটওয়্যার ডিজাইন উন্নত করুন

আপনি জানেন কী চান, কিন্তু কোড কoperate করছে না। হয়তো إندেন্টেশন লেভেল একটু বেশি, অথবা হাফ ডজন মেথড চেইন করা, অথবা অ্যাসিমেট্রিকাল লাগছে। যেটা হোক, কিছু অফ লাগছে। আপনি ইগনোর করতে পারেন - মানে, ফিচার বੈकलগ পড়ে আছে, এবং এটা সেটা খারাপ নয়। কিন্তু এটা ভুল: আপনার কোড আপনাকে কিছু বলতে চাইছে, এবং আপনি সেটা মিস করতে চান না।

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

সিন্ট্যাক্টিক ভিনেগার কেমন দেখে?

minitest/mock ব্যবহার করে সিন্ট্যাক্টিক ভিনেগার এর উদাহরণ, রুবির সাথে আসা ছোট মকিং ও স্টাবিং লাইব্রেরি:

require 'minitest/mock' class CartTest < MiniTest::Test def test_error_message_set_on_charge_failure cart = Cart.new(items) cart.stub(:charge!, false) do cart.checkout! assert_equal "The credit card could not be charged", cart.credit_card_error end end end 

টেস্ট রান করলে, Cart-এর charge! মেথড স্টাবড হয়, তাই টেস্ট পেমেন্ট প্রসেসর হিট করবে না। ব্লক সিনট্যাক্স চমৎকার একদম তখনই স্টাব করতে যখন চান। কিন্তু অনেক মেথড স্টাব করতে চাইলে কী হয়?

require 'minitest/mock' class CartTest < MiniTest::Test def test_error_message_set_on_charge_failure payment_processor = PaymentProcessor.new cart = Cart.new(items, processor: payment_processor) payment_processor.stub(:charge!, false) do payment_processor.stub(:login!, true) do payment_processor.stub(:logout!, true) do cart.checkout! assert_equal "The credit card could not be charged", cart.credit_card_error end end end end end 

ছি। একদম অ compagnible ইনডেন্টেশন। এবং এটা শুধু একটা টেস্টে - এই কোড অনেক টেস্টে রিপিট হতে পারে ভাবুন।

আপনি পারেন এই নেস্টিংকে একটা টেস্ট হেল্পার মেথডে র‍্যাপ করতে। কিন্তু আপনি আপনার কোডকে সত্যিকারের শুনলে, সেটা বলছে ভালো পথ খুঁজুন। হয়তো টেস্ট ডাবল ব্যবহার করার সময় এসেছে:

class TestPaymentProcessor < PaymentProcessor def login!(account_id, key) true end def charge!(amount, credit_card) credit_card.can_be_charged? end def logout! true end end class CartTest < MiniTest::Test def test_error_message_set_on_charge_failure test_payment_processor = TestPaymentProcessor.new cart = Cart.new(items, processor: test_payment_processor) cart.credit_card = failing_credit_card cart.checkout! assert_equal "The credit card could not be charged", cart.credit_card_error end end 

এখন আপনার টেস্ট বেশি রিডেবল। প্লাস, আপনার কাছে একটি TestPaymentProcessor আছে যা অন্য জায়গায়ও ব্যবহার করা যাবে। ডেভেলপমেন্ট মোডেও ব্যবহার করতে পারেন, যদি রিয়েল সার্ভার হিট করতে না চান!

খারাপ কোড খারাপ লাগা উচিত

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

আপনার পছন্দের অপিনিয়নেটেড লাইব্রেরিগুলো কী, এবং সেগুলো কীভাবে খারাপ কোড খুঁজে ফিক্স করতে হেল্প করে? কমেন্টে জানান!

  1. Netflix একাউন্ট PIN দিয়ে সিকিউর করুন: ধাপে ধাপে গাইড

  2. আইপ্যাড ও আইফোনে QR কোড স্ক্যান করার পদ্ধতি: একটি কুইক গাইড

  3. ধাপে ধাপে: ভেরিফিকেশন কোড ব্যবহার করে আপনার Gmail পাসওয়ার্ড রিসেট করুন

  4. ওয়েব ডিজাইন উন্নত করুন: সর্বোত্তম পারফরম্যান্সের জন্য HTML এবং CSS পরিষ্কার করুন