Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

कोड की गंध पहचानकर और ठीक करके सॉफ्टवेयर डिज़ाइन को बेहतर बनाएं

आप जानते हैं कि आप क्या करना चाहते हैं, लेकिन आपका कोड बस सहयोग नहीं कर रहा। शायद इसमें इंडेंटेशन के कुछ ज़्यादा ही लेवल हैं, या ये आधा दर्जन मेथड्स को चेन करता है, या फिर ये असममित दिखता है। जो भी हो, कुछ तो अजीब लगता है। आप इसे नज़रअंदाज़ कर सकते हैं – मेरा मतलब है, आपके पास फीचर्स का एक बैकलॉग है जिन्हें आप अभी भी लिखना चाहते हैं, और ये इतना बुरा भी नहीं है। लेकिन ये एक गलती होगी: आपका कोड आपको कुछ बताने की कोशिश कर रहा है, और आप इसे मिस नहीं करना चाहेंगे।

अगर आप सीख लें कि कब कोड अजीब लगता है, तो आप तेज़ी से और नाटकीय रूप से अपने सॉफ्टवेयर डिज़ाइन कौशल को सुधारेंगे

ये अंतर्ज्ञान बनाना कठिन है, क्योंकि ये अनुभव, मेंटरशिप और कोड रिव्यू से आता है। लेकिन आप उन लाइब्रेरीज़ की मदद ले सकते हैं जो सिंटैक्टिक विनेगर का उपयोग करके खराब कोड को खराब महसूस कराती हैं।

सिंटैक्टिक विनेगर कैसा दिखता है?

यहाँ 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

छी। ये बहुत ज़्यादा इंडेंटेशन है। और ये सिर्फ एक टेस्ट में है – आप कल्पना कर सकते हैं कि ये कोड कई अन्य टेस्ट्स में दोहराया जा रहा होगा।

आप कर सकते हैं इस सारी नेस्टिंग को एक टेस्ट हेल्पर मेथड में लपेट दें। लेकिन अगर आप वास्तव में अपने कोड की सुन रहे हैं, तो ये आपको बता रहा है कि आपको एक बेहतर तरीका खोजना चाहिए। शायद टेस्ट डबल का उपयोग करने का समय आ गया है:

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. iPad और iPhone पर QR कोड कैसे स्कैन करें - एक त्वरित गाइड iPad और iPhone पर QR कोड कैसे स्कैन करें - एक त्वरित गाइड

    2018 की शुरुआत में, टेक दिग्गज Apple ने अपने दिमाग को झकझोर देने वाले फीचर्स iOS 12 को रोल आउट किया। iPad और iPhone पर QR कोड स्कैन करना उन फीचर्स में से एक था जिसे Apple उपयोगकर्ताओं के अनुभव को अगले स्तर पर लाने के लिए जोड़ा गया था। यह फीचर न केवल आपके जीवन को आसान बनाने में सक्षम है बल्कि टिकट, क

  1. चरण-दर-चरण: वेरिफिकेशन कोड का उपयोग करके अपना Gmail पासवर्ड रीसेट करें चरण-दर-चरण: वेरिफिकेशन कोड का उपयोग करके अपना Gmail पासवर्ड रीसेट करें

    कई कारण हैं जिनकी वजह से आप अपना Gmail पासवर्ड रीसेट करना चाह सकते हैं, जिसमें संदिग्ध सुरक्षा हमले से लेकर नई खोजी गई गोपनीयता की इच्छा तक शामिल है। यहां तक कि अगर आपके पास कोई विशेष कारण नहीं है, तो हर कुछ महीनों में अपना पासवर्ड बदलना आमतौर पर आपके खाते को सुरक्षित रखने का एक अच्छा विचार है। यदि

  1. अपने वेब डिज़ाइन को उन्नत करें: इष्टतम प्रदर्शन के लिए HTML और CSS साफ़ करें अपने वेब डिज़ाइन को उन्नत करें: इष्टतम प्रदर्शन के लिए HTML और CSS साफ़ करें

    वेब विकास के बारे में जाने के दो तरीके हैं: टेक्स्ट एडिटर का तरीका और GUI एडिटर का तरीका। पहला तरीका मुख्य रूप से अधिक उन्नत डेवलपर्स के लिए है, जो कोड को समझते हैं, जानते हैं कि वे क्या चाहते हैं और अपने वेब पेज बनाने के लिए दृश्य सहायता की आवश्यकता नहीं रखते। वे vim, emacs, Notepad++, Kate, या अन्