আপনি আপনার পাগল পরীক্ষার সমস্যার নিখুঁত সমাধান খুঁজে পেয়েছেন. আপনাকে যা করতে হবে তা হল 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
যখনই আমার আপাতদৃষ্টিতে নিখুঁত সমাধানগুলি ভেঙ্গে যায়, এর কারণ হল আমি কল্পনাও করিনি যে শেষ পর্যন্ত আমাকে পরিচালনা করতে হবে৷
ঠিক আছে. আমরা ভবিষ্যতের পূর্বাভাস দিতে পারি না। কিন্তু যখন আপনি এটি ঘটছে লক্ষ্য করুন, খনন বন্ধ করুন। প্যাচের পর প্যাচের পর প্যাচ প্রয়োগ করবেন না। পরিবর্তে, আপনার আসল সমাধানটি খুলে দিন এবং এক্সট্রাক্ট করুন একটি ভাল।
কীভাবে একটি ভালো সমাধান বের করতে হয়
যখন আপনি আপনার সমস্ত কোড স্পষ্টভাবে, সহজবোধ্যভাবে লিখবেন, তখন আপনি এটিকে পুনর্গঠিত করার উপায়গুলি নিয়ে ভাবতে শুরু করবেন৷
সাধারণত, সঠিক জায়গায় এক্সট্র্যাক্ট মেথড বা এক্সট্রাক্ট ক্লাস প্রয়োগ করাই যথেষ্ট। কৌশলটি সেই সঠিক জায়গাটি কী তা নির্ধারণ করছে। কিন্তু যখন আপনি আপনার সামনে প্রচুর পুনরাবৃত্তি দেখতে পান তখন এটি বের করা অনেক সহজ।
এবং উত্তরাধিকার এবং প্রতিনিধিত্বের উপর ঝুঁকুন। এগুলি হল সাধারণ বিল্ডিং ব্লক যা আপনাকে খুব চালাক না হয়ে আপনার কোড পরিষ্কার করতে সাহায্য করবে৷
আরো একটি জিনিস
ডকুমেন্টেশন পড়তে ভুলবেন না:
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
উত্তর সবসময় যে সুস্পষ্ট হবে না। কিন্তু আপনি যে সমস্যাটি তিনটি ক্লাস লিখেছেন এবং সমাধানের জন্য একটি রত্ন লিখেছেন তার সঠিক সমস্যার জন্য একটি এক-পদ্ধতি অন্তর্নির্মিত সমাধান রয়েছে তা উপলব্ধি করার চেয়ে নম্রতার আর কিছুই নেই৷
একটি ভাল সমাধান, শেষ পর্যন্ত
আপনার দ্বিতীয় সমাধান সাধারণত প্রতিটি উপায়ে ভাল হবে আপনার আসলটির চেয়ে।
এটা কেন?
-
একজন বিকাশকারী হিসাবে আপনার আরও অভিজ্ঞতা আছে৷৷
সুতরাং কোনটি ভাল কোড তৈরি করে সে সম্পর্কে আপনার আরও ভাল ধারণা থাকবে।
-
আপনার তৈরি করা সিস্টেম সম্পর্কে আপনি আরও জানেন।
তাই আপনি যে কোডটি লিখছেন তা কীভাবে এটির সাথে খাপ খায় সে সম্পর্কে আপনি আরও ভাল সিদ্ধান্ত নিতে পারেন।
-
আপনি জানেন আপনার কোন অনুমান ভুল ছিল
তাই আপনার সমাধানগুলি বিদ্যমান প্রকৃত সমস্যাগুলির সাথে আরও ভালভাবে মানিয়ে নিতে পারে, আপনি যেগুলি কল্পনা করেছিলেন তা নয় হয়ত বিদ্যমান।
এবং শেষ পর্যন্ত, আপনার চতুরতার সর্বোত্তম ফিট করার জন্য একটি জায়গা হতে পারে। এইবার, হ্যাক ছাড়াই।
আপনাকে খনন করা বন্ধ করতে হবে
চতুর কোড লিখতে মজা. রুবিতে, এটি লেখাও সহজ। এবং একটি পথ ধরে যাওয়া বিশেষভাবে সহজ, এমনকি যখন আপনি জানেন যে এটি আপনাকে ভুল জায়গায় নিয়ে যাচ্ছে।
কিন্তু একবার আপনি এই বিরক্তিকর ধারণাটি পেয়ে যান যে কিছু ঠিক নয়, এক মিনিটের জন্য থামুন। আপনার কোড আন-ফ্যাক্টর. ডকুমেন্টেশন পড়ুন. আপনার কোড সোজা এবং স্পষ্ট করুন. এবং একটি ভাল উপায় খুঁজুন।
আপনি কি মনে করতে পারেন যে শেষবার আপনি নিজেকে একটি গর্ত খনন করেছিলেন যা শেষ হবে না? কিভাবে আপনি নিজেকে এটি থেকে বের করে আনুন? এবং আপনি যে কোডটি দিয়ে শেষ করেছেন তা দেখতে কেমন ছিল?