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

जब एज केस आपके परफेक्ट सॉल्यूशन में छेद करते हैं

आपको अपनी पागल परीक्षण समस्या का सही समाधान मिल गया है। आपको केवल 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

जब भी मेरे प्रतीत होने वाले सही समाधान टूटते हैं, ऐसा इसलिए होता है क्योंकि मैंने उन किनारे के मामलों की कल्पना नहीं की थी जिन्हें मुझे अंततः संभालना होगा।

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

एक बेहतर समाधान कैसे निकालें

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

आमतौर पर, Extract Method या Extract Class को सही जगह पर लागू करना पर्याप्त है। चाल तय कर रही है कि वह सही जगह क्या है। लेकिन जब आप अपने सामने बहुत सारी दोहराव देखते हैं तो इसका पता लगाना बहुत आसान हो जाता है।

और विरासत और प्रतिनिधिमंडल पर झुक जाओ। ये सरल बिल्डिंग ब्लॉक्स हैं जो बिना ज्यादा चालाकी किए आपके कोड को साफ करने में आपकी मदद करेंगे।

एक और बात

दस्तावेज़ीकरण पढ़ना न भूलें:

test/integration/welcome_test.rb
require 'test_helper'

class WelcomeTest < ActionDispatch::IntegrationTest

  setup do
    # This already exists:
    host! "www.justinweiss.com"
  end
  
  test "can visit the homepage" do
    get "/"
    # ...
  end
  # ...
end

उत्तर हमेशा इतना स्पष्ट नहीं होगा। लेकिन यह महसूस करने के अलावा और कुछ भी नहीं है कि आपके द्वारा तीन वर्गों में लिखी गई सटीक समस्या का एक-विधि अंतर्निहित समाधान है और हल करने के लिए एक रत्न है।

अंत में एक बेहतर समाधान

आपका दूसरा समाधान आमतौर पर हर तरह से में बेहतर होगा आपके मूल वाले की तुलना में।

ऐसा क्यों है?

  • आपके पास एक डेवलपर के रूप में अधिक अनुभव है।

    तो आपको इस बात का बेहतर अंदाजा होगा कि कौन सा कोड अच्छा कोड बनाता है।

  • आप अपने द्वारा बनाए गए सिस्टम के बारे में अधिक जानते हैं।

    इसलिए आप इस बारे में बेहतर निर्णय ले सकते हैं कि आप जो कोड लिख रहे हैं वह उसमें कैसे फिट बैठता है।

  • आप जानते हैं कि आपकी कौन सी धारणा गलत थी

    इसलिए आपके समाधान उन वास्तविक समस्याओं को बेहतर ढंग से फिट कर सकते हैं जो मौजूद हैं, न कि उन समस्याओं के बारे में जिनकी आपने कल्पना की थी हो सकता है मौजूद है।

और अंत में, आपकी सर्वोत्तम चतुराई के लिए वापस फिट होने के लिए एक जगह हो सकती है। इस बार, हैक के बिना।

आपको खुदाई बंद करनी होगी

चतुर कोड लिखना मजेदार है। रूबी में, लिखना भी आसान है। और पथ पर चलते रहना विशेष रूप से आसान है, भले ही आप जानते हों कि यह आपको गलत जगह पर ले जा रहा है।

लेकिन एक बार जब आपको यह आभास हो जाए कि कुछ ठीक नहीं है, तो एक मिनट के लिए रुकें। अपने कोड को अन-फैक्टर करें। दस्तावेज़ीकरण पढ़ें। अपना कोड सीधा और स्पष्ट बनाएं। और एक बेहतर तरीका खोजें।

क्या आप याद कर सकते हैं कि पिछली बार जब आप अपने लिए एक ऐसा गड्ढा खोदते रहे थे, जिसका अंत नहीं होता? आपने . कैसे अपने आप को इससे बाहर निकालो? और आपके द्वारा समाप्त किया गया कोड कैसा दिखता है?


  1. दूरस्थ रूप से काम करते समय अपना समय बेहतर ढंग से प्रबंधित करने के लिए Office 365 में MyAnalytics का उपयोग कैसे करें

    घर से काम करना चुनौतीपूर्ण हो सकता है, खासकर जब पूरा घर आसपास हो। प्रभावी समय प्रबंधन महत्वपूर्ण है यदि आप एक उचित कार्य-जीवन संतुलन बनाए रखते हुए अपने दिन का सदुपयोग करना चाहते हैं। Microsofts MyAnalytics Office 365 परिवार का एक कम-ज्ञात सदस्य है। MyAnalytics अंतर्दृष्टि प्रदान कर सकता है जो आपको

  1. बुद्धिमान वीडियो कनवर्टर:एक उत्तम वीडियो प्रारूप समाधान!

    समझदार वीडियो कन्वर्टर दुनिया भर में सबसे लोकप्रिय वीडियो रूपांतरण सॉफ्टवेयर में से एक है। किसी भी मल्टीमीडिया डिवाइस पर आसानी से चलने योग्य किसी भी फ़ाइल प्रारूप में वीडियो परिवर्तित करना इतना आसान कभी नहीं रहा। सॉफ्टवेयर पोर्टेबल संस्करण में उपलब्ध है जिसे आसानी से यूएसबी ड्राइव या मेमोरी कार्ड मे

  1. एज कंप्यूटिंग:आपको इसे कब लगाना चाहिए

    एज कंप्यूटिंग क्लाउड कंप्यूटिंग का पूरक है। हालाँकि, कई संगठन अभी भी दुविधा में हैं कि क्या उन्हें एज कंप्यूटिंग की आवश्यकता है या यह तकनीक को अपनाने के लिए बहुत जल्द है। क्लाउड कम्प्यूटिंग पर एक सूचित निर्णय लेने के लिए, आपको सबसे पहले आत्मनिरीक्षण करने की आवश्यकता है कि आपको एज कम्प्यूटिंग की आवश्