आपको अपनी पागल परीक्षण समस्या का सही समाधान मिल गया है। आपको केवल DEFAULT_HOST
. को ओवरराइड करना है स्थिर, और आप व्यवसाय में रहेंगे।
सिवाय इसके कि आपको उस बदसूरत संदेश को दूर करने के लिए चेतावनियां बंद करनी होंगी। लेकिन अब आपके सभी परीक्षण पास हो गए हैं, और आपको केवल कोड की कुछ पंक्तियाँ बदलनी हैं!
उस एक परीक्षण को छोड़कर जहां आप नहीं होस्ट को ओवरराइड करना चाहते हैं। लेकिन आप केवल स्थिरांक को फिर से ओवरराइड कर सकते हैं, चेतावनियों को फिर से बंद कर सकते हैं, और सुनिश्चित कर सकते हैं कि यह परीक्षण के अंत में रीसेट हो जाए। आप काम पूरा करने के बहुत करीब हैं, आप इसका स्वाद लगभग चख सकते हैं!
को छोड़कर… को छोड़कर… को छोड़कर…
और कुछ दिनों बाद, जब आप सत्ताईसवीं बार फंस जाते हैं और आपका ऐप हैक की एक विशाल गेंद बन जाता है, तो आप वापस बैठकर आश्चर्य करेंगे:मैं क्यों कर रहा हूं यह सब? क्या समाधान समस्या से भी बदतर नहीं है?
बहुत चतुर समस्या का समाधान कैसे करें
यह स्पष्ट है कि आपका मूल विचार आपकी पूरी समस्या का समाधान नहीं करेगा। तो आप कैसे सोचते हैं कि बेहतर विचार, जो उन सभी प्रमुख मामलों को हल करता है जो आपका मूल विचार नहीं कर सका?
आप नहीं कर सकते। आप अधिक चतुराई से अधिक चतुराई से नहीं लड़ सकते। कम से कम सीधे तो नहीं। इसके बजाय, दूसरे रास्ते पर जाएँ। सरल जाओ। सीधे जाओ।
इसका क्या मतलब है?
उस कोड को इनलाइन करें जिसे आप दूर करने का प्रयास कर रहे थे। करें अपने आप को दोहराएं। अपना कोड स्पष्ट रखें।
यदि आप किसी DEFAULT_HOST
. को ओवरराइड करने का प्रयास कर रहे थे एक अलग डिफ़ॉल्ट होस्ट के साथ स्थिर, एक डिफ़ॉल्ट के पूरे विचार के बारे में भूल जाओ। बस इसे हर बार निर्दिष्ट करें।
तो, इसके बजाय:
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
कुछ ऐसा करें:
require 'test_helper'
class WelcomeTest < ActionDispatch::IntegrationTest
test "can visit the homepage" do
get "https://www.justinweiss.com/"
# ...
end
# ...
end
जब भी मेरे प्रतीत होने वाले सही समाधान टूटते हैं, ऐसा इसलिए होता है क्योंकि मैंने उन किनारे के मामलों की कल्पना नहीं की थी जिन्हें मुझे अंततः संभालना होगा।
कोई बात नहीं। हम भविष्य की भविष्यवाणी नहीं कर सकते। लेकिन जब आप इसे होते हुए देखें, तो खुदाई करना बंद कर दें। पैच के बाद पैच केवल पैच लागू न करें। इसके बजाय, अपना मूल समाधान निकालें और निकालें एक बेहतर।
एक बेहतर समाधान कैसे निकालें
जब आपके पास अपना सारा कोड स्पष्ट, सीधे तरीके से लिखा होगा, तो आप इसे पुनर्व्यवस्थित करने के तरीकों के बारे में सोचना शुरू कर देंगे।
आमतौर पर, Extract Method या Extract Class को सही जगह पर लागू करना पर्याप्त है। चाल तय कर रही है कि वह सही जगह क्या है। लेकिन जब आप अपने सामने बहुत सारी दोहराव देखते हैं तो इसका पता लगाना बहुत आसान हो जाता है।
और विरासत और प्रतिनिधिमंडल पर झुक जाओ। ये सरल बिल्डिंग ब्लॉक्स हैं जो बिना ज्यादा चालाकी किए आपके कोड को साफ करने में आपकी मदद करेंगे।
एक और बात
दस्तावेज़ीकरण पढ़ना न भूलें:
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
उत्तर हमेशा इतना स्पष्ट नहीं होगा। लेकिन यह महसूस करने के अलावा और कुछ भी नहीं है कि आपके द्वारा तीन वर्गों में लिखी गई सटीक समस्या का एक-विधि अंतर्निहित समाधान है और हल करने के लिए एक रत्न है।
अंत में एक बेहतर समाधान
आपका दूसरा समाधान आमतौर पर हर तरह से में बेहतर होगा आपके मूल वाले की तुलना में।
ऐसा क्यों है?
-
आपके पास एक डेवलपर के रूप में अधिक अनुभव है।
तो आपको इस बात का बेहतर अंदाजा होगा कि कौन सा कोड अच्छा कोड बनाता है।
-
आप अपने द्वारा बनाए गए सिस्टम के बारे में अधिक जानते हैं।
इसलिए आप इस बारे में बेहतर निर्णय ले सकते हैं कि आप जो कोड लिख रहे हैं वह उसमें कैसे फिट बैठता है।
-
आप जानते हैं कि आपकी कौन सी धारणा गलत थी
इसलिए आपके समाधान उन वास्तविक समस्याओं को बेहतर ढंग से फिट कर सकते हैं जो मौजूद हैं, न कि उन समस्याओं के बारे में जिनकी आपने कल्पना की थी हो सकता है मौजूद है।
और अंत में, आपकी सर्वोत्तम चतुराई के लिए वापस फिट होने के लिए एक जगह हो सकती है। इस बार, हैक के बिना।
आपको खुदाई बंद करनी होगी
चतुर कोड लिखना मजेदार है। रूबी में, लिखना भी आसान है। और पथ पर चलते रहना विशेष रूप से आसान है, भले ही आप जानते हों कि यह आपको गलत जगह पर ले जा रहा है।
लेकिन एक बार जब आपको यह आभास हो जाए कि कुछ ठीक नहीं है, तो एक मिनट के लिए रुकें। अपने कोड को अन-फैक्टर करें। दस्तावेज़ीकरण पढ़ें। अपना कोड सीधा और स्पष्ट बनाएं। और एक बेहतर तरीका खोजें।
क्या आप याद कर सकते हैं कि पिछली बार जब आप अपने लिए एक ऐसा गड्ढा खोदते रहे थे, जिसका अंत नहीं होता? आपने . कैसे अपने आप को इससे बाहर निकालो? और आपके द्वारा समाप्त किया गया कोड कैसा दिखता है?